Для тех кто знаком с Awesomium для .net
Есть класс
public class SiteShoter
{
int _width;
static Thread _awesomiumTask;
static SynchronizationContext _awesomeContext;
public SiteShoter(int width)
{
_width = width;
}
public static void Init()
{
if (_awesomiumTask == null)
{
_awesomiumTask = new Thread(new ThreadStart(() =>
{
WebCore.Started += (s, e) =>
{
_awesomeContext = SynchronizationContext.Current;
};
WebCore.Run();
}));
_awesomiumTask.Start();
}
}
public void CreateWebshot(Uri url,string destFileName)
{
if (_awesomeContext == null)
return;
_awesomeContext.Send(state =>
{
using (var view = WebCore.CreateWebView(_width, 100, WebViewType.Offscreen))
{
view.Crashed += (o, ee) =>
{
Console.WriteLine(ee.Status);
};
view.LoadingFrameComplete += (s, ee) =>
{
if (!ee.IsMainFrame)
return;
var surface = (BitmapSurface)view.Surface;
surface.Resized += (oo, eee) =>
{
surface.SaveToPNG(destFileName, true);
Console.WriteLine("COMPLETED!");
};
var x = view.ExecuteJavascriptWithResult("Math.max(document.body.scrollWidth, document.body.offsetWidth)").ToString();
var y = view.ExecuteJavascriptWithResult("Math.max(document.body.scrollHeight, document.body.offsetHeight)").ToString();
view.Resize(Convert.ToInt32(x), Convert.ToInt32(y));
};
view.Source = url;
}
}, null);
}
}
И он не работает. В методе public void CreateWebshot(Uri url,string destFileName)
после view.Source = url;
view.IsLoading
находится в состоянии true
и в нем висит, соответственно view.LoadingFrameComplete
не срабатывает. Крэшей тоже нет.
UPD:
Для того, чтобы предотвратить Dispose()
я добавил кое что после строки view.Source = url;
view.Source = url;
while (view.IsLoading)
{
}
Console.WriteLine("COMPLETED!");
view.IsLoading
будет false
, как раз и должно срабатывать событие view.LoadingFrameComplete
Но этого не происходит... view.IsLoading == true
всегда.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Скажите пожалуйста, есть ли возможность интегрировать приватное видео на свой сайт используя "The Google API Client https://githubcom/google/google-api-php-client"