使用CefSharp时,自定义了一个扩展方法LoadPageAsync,用于在ChromiumWebBrowser初始化完成时加载网址,如果初始化未完成时加载Url,会加载不成功。此方法返回Task,返回后的Task不能再调用Start方法,否则会提示:不能对约定样式的任务调用 Start。
代码如下:
public static Task LoadPageAsync(this ChromiumWebBrowser browser, string address = null)
{
var tcs = new TaskCompletionSource<bool>();
EventHandler<IsBrowserInitializedChangedEventArgs> handler = null;
handler = (sender, args) =>
{
if (args.IsBrowserInitialized)
{
browser.IsBrowserInitializedChanged -= handler;
if (!string.IsNullOrEmpty(address))
{
browser.InvokeOnUiThreadIfRequired(() => browser.Load(address));
}
tcs.TrySetResult(true);
}
};
browser.IsBrowserInitializedChanged += handler;
return tcs.Task;
}