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 (デリゲート メソッド、オブジェクト [] 引数) で
したがって、配列(私が推定するパラメーターの場合)が空であると言われていますが、パラメーターなしでメソッドを呼び出しているため、これは実際には正しいです...ここでの問題は何ですか?