我想从不同的线程访问静态 WebBrowser。
这是我的示例代码:
public partial class MainFrame : Form
{
public static WebBrowser webBrowser = new WebBrowser();
public MainFrame()
{
InitializeComponent();
}
}
class Job
{
public void Process()
{
MainFrame.webBrowser.Navigate("http://www.google.com");
while (MainFrame.webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
Thread.Sleep(1000);
Application.DoEvents();
}
}
}
为简单起见,假设我有 2 个线程。线程 1 调用 Process() 函数并等待它完成,所以在这个阶段 webBrowser 应该处于 CompleteWebBrowserReadyState
模式。
线程 1 完成 10 秒后,线程 2 调用Process()
函数。此时如果我调试我的代码并在Process()
函数的第一行放置一个 BreakPoint 并观察MainFrame.webBrowser
变量,我会看到:
换句话说,它以某种方式无法访问。有人知道这个问题的任何解决方案吗?
附加信息:线程 1 完成后 10 秒,如果我再次调用线程 1,那么一切看起来都很好。