为什么这样做,
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();
}
答案 0 :(得分: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/" });
});
答案 1 :(得分:2)
请记住,由于底层引擎XulRunner(XPCOM),GeckoFX组件通常不是多线程的。这是因为XulRunner本身就是一个单线程运行时。
答案 2 :(得分:0)
它不起作用,因为Geckofx本身并不支持交叉线程,如果你想做交叉线程,你需要先调用它。
{display:none}