Я новичок в CefSharp. Я использую Offscreen, чтобы перейти на веб-сайт, войти в систему, а затем получить ссылку с полученной страницы. На этом этапе я хочу вернуться к основному потоку приложения. Прямо сейчас у меня есть:
static void Main(string[] args)
{
Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
_browser = new ChromiumWebBrowser(_loginURL);
_browser.LoadingStateChanged += BrowserLoadingStateChanged;
*I want to wait here until all the browser stuff is complete*
Console.ReadKey();
Cef.Shutdown();
}
private static void BrowserLoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
if (!e.IsLoading)
{
if (!_isLoggedIn)
{
...
}
} else {
var myLinkScript = @"document.querySelector('[href*=testlink]').href;";
_browser.EvaluateScriptAsync(myLinkScript).ContinueWith(u =>
{
if (u.Result.Success && (u.Result.Result != null))
{
*Here I have the link. I want to return to the main application thread.
*I do not want to continue doing more steps here.
}
}
}
Если бы я делал это в «обычном» приложении, я бы инкапсулировал все в функцию, например: string link = DoBrowserStuff (_loginURL);
Любая помощь будет принята с благодарностью. Спасибо.