1

なぜこれが機能するのか、

    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();
    }
4

3 に答える 3

7

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/" });
});
于 2009-10-24T19:33:38.890 に答える
2

基礎となるエンジン XulRunner (XPCOM) により、GeckoFX コンポーネントは通常、マルチスレッドで読み取り可能ではないことに注意してください。これは、XulRunner 自体がシングルスレッドのランタイムであるためです。

于 2011-08-13T17:22:23.013 に答える