繁体   English   中英

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

[英]Why doesn't GeckoFX Navigate() request work if launched in a seperate thread?

为什么这项工作有效,

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

这不是吗?

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

        thread.Start();
    }

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

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

请记住,由于底层引擎XulRunner(XPCOM),GeckoFX组件通常不是多可读的。 这是因为XulRunner本身是一个单线程运行时。

它不起作用,因为Geckofx本身不支持交叉线程,如果要进行交叉线程,则需要先调用它。

    Thread thread = new Thread(delegate()
    {
         this.Invoke(new Action(() => {GeckoBrowser.Navigate("http://www.google.com/");}));
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM