如果在单独的线程中启动,为什么GeckoFX Navigate()请求不起作用?

1 .net c# browser multithreading geckofx

为什么这样做,

    private void buttonBoo_Click(object sender, EventArgs e)
    {
        GeckoBrowser.Navigate("http://www.google.com/");
    }
Run Code Online (Sandbox Code Playgroud)

这不是吗?

    private void buttonBoo_Click(object sender, EventArgs e)
    {
        Thread thread = new Thread(delegate()
        {
            GeckoBrowser.Navigate("http://www.google.com/");
        });

        thread.Start();
    }
Run Code Online (Sandbox Code Playgroud)

ito*_*son 7

GeckoBrowser是一个Windows窗体控件.Control的属性和方法只能从创建Control的线程中调用.要从另一个线程对Control执行任何操作,您需要使用Invoke或BeginInvoke方法,例如

Thread thread = new Thread(delegate()
{
  Action<string> action = url => GeckoBrowser.Navigate(url);
  GeckoBrowser.Invoke(action, new object[] { "http://www.google.com/" });
});
Run Code Online (Sandbox Code Playgroud)