【发布时间】:2011-09-22 13:00:14
【问题描述】:
我有一个 Windows 窗体应用程序,不幸的是,它必须从第二个线程调用控件。我一直在使用http://msdn.microsoft.com/en-us/library/ms171728.aspx 中描述的线程安全模式。过去效果很好。
我现在遇到的具体问题:我有一个 WebBrowser 控件,我正在尝试使用此线程安全模式调用 WebBrowser.Navigate() 方法,结果我得到了 StackOverflow 异常。这是我编写的线程安全导航方法。
Private Delegate Sub NavigateControlCallback(ByRef wb As WebBrowser, ByVal url As String)
Private Sub AsyncNavigate(ByRef wb As WebBrowser, ByVal URL As String)
Try
If wb.InvokeRequired Then
Dim callback As New NavigateControlCallback(AddressOf AsyncNavigate)
callback(wb, url)
Else
wb.Navigate(url)
End If
Catch ex As Exception
End Try
End Sub
是否有一种线程安全的方式与 WinForms 组件进行交互而不会产生这些 StackOverflowExceptions 的副作用?
【问题讨论】:
标签: vb.net winforms thread-safety .net-2.0 stack-overflow