0

2 つの個別のスレッドがあり、他のスレッドからメンバーを呼び出す必要がある場合があります。通常の呼び出し方法でこれを行います。基本的なセットアップは次のとおりです。

void Foo() //On thread 1
{
     if (this.InvokeRequired)
          this.Invoke(new Action(Foo2));
     else
          Foo2();
}

void Foo2(){/*Do Work*/} //Accesses members on thread 2

「ArgumentException が処理されませんでした: 入力配列が空でした」というエラーが表示されます。問題は、私が呼び出そうとしているメソッドにはパラメーターがなく、ドキュメントによると、これは問題にならないということです。

私も置き換えてみました:

this.Invoke(new Action(Foo2));

this.Invoke(new Action(Foo2), null);

(ドキュメントには、パラメーターがない場合は null を渡すと記載されていますが、それでも同じエラーが発生します)

StackTrace の先頭は次のとおりです。

System.Windows.Forms.Control.MarshaledInvoke (コントロールの呼び出し元、デリゲート メソッド、オブジェクト [] 引数、ブール値の同期) で System.Windows.Forms.Control.Invoke (デリゲート メソッド、オブジェクト [] 引数) で

したがって、配列(私が推定するパラメーターの場合)が空であると言われていますが、パラメーターなしでメソッドを呼び出しているため、これは実際には正しいです...ここでの問題は何ですか?

4

0 に答える 0