这是一些简单的C#代码:
private void MainFrm_Load(object sender, EventArgs e)
{
webBrowser.ProgressChanged += WebBrowser_ProgressChanged;
webBrowser.Navigate("https://www.google.com/");
}
private void WebBrowser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
{
MessageBox.Show(String.Format("WebBrowser progress changed, TID = {0}", System.Threading.Thread.CurrentThread.ManagedThreadId));
}
其中MainFrm是一个简单的System.Windows.Forms,webBrowser是MainFrm中添加的WebBrowser控件(来自设计器工具箱)。
我希望这段代码能够:
我所看到的是多个mbox @一次w /同一报告的TID !
此TID也是MainFrm执行的线程的TID!
我在这里遗漏了什么导致这种行为在我看来非常违反直觉:在我看来它不应该发生,因为这意味着单个线程在两个地方执行@一次(?)。这怎么可能?
由于我的应用中存在错误,我实际上已经发现了这一点。该错误是我依赖事件将在相同的线程上执行的事实,换句话说,它不可能同时执行两次
谢谢,
科尔内留。