【发布时间】:2011-09-03 23:29:11
【问题描述】:
我想同步调用 webBrowser.Navigate(string urlString),其中 webBrowser 是 Windows 窗体控件。我就是这样做的
...
private delegate void NavigateDelegate(string s);
...
private void Function()
{
NavigateDelegate navigateDelegate =
new NavigateDelegate(this.webBrowser1.Navigate);
IAsyncResult asyncResult =
navigateDelegate.BeginInvoke("http://google.com", null, null);
while (!asyncResult.IsCompleted)
{
Thread.Sleep(10);
}
MessageBox.Show("Operation has completed !");
}
但消息永远不会被推送。为什么这段代码不能正常工作?
【问题讨论】:
-
您不需要使用委托 - webbrowser.Navigate 是异步方法。 msdn.microsoft.com/en-us/library/…
-
我知道这个方法是异步的。我想同步重制它,我认为这段代码会帮助我......
-
delegate.BeginInvoke 是异步方法。您的代码运行异步方法异步:两次异步。所以,这根本不是你想做的。
-
你完全正确!谢谢