Reputation: 17
The problem can be a bit strange, but i need to execute NavigationCompleted() method before Test() method ends:
public Test()
{
WebView wb = new WebView(WebViewExecutionMode.SeparateProcess);
wb.Navigate(new Uri(@"Url"));
wb.NavigationCompleted += NavigationCompleted;
}
private async void NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
//some stuff
}
I can't use Thread.Sleep() in Test() Method because in this case the WebView can't do it's stuff, and therefore NavigationCompleted() will be called only after the Test () method is completed.
Upvotes: 1
Views: 238
Reputation: 2358
You could refer to this answer to use AutoResetEvent to wait for the NavigationCompleted event handler occurred. As follows:
public AutoResetEvent waitForNavComplete;
public async void test()
{
waitForNavComplete = new AutoResetEvent(false);
mywebView.Navigate(new Uri(..));
mywebView.NavigationCompleted += MywebView_NavigationCompleted;
await Task.Run(() => waitForNavComplete.WaitOne());
}
private void MywebView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
……
waitForNavComplete.Set();
}
Upvotes: 1