MSDNのスレッドセーフ呼び出しチュートリアルを参照してください。次のステートメントを参照してください。
// InvokeRequired required compares the thread ID of the
// calling thread to the thread ID of the creating thread.
// If these threads are different, it returns true.
if (this.textBox1.InvokeRequired) {
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
} else {
this.textBox1.Text = text;
}
もちろん、私はコードで何度も使用しており、使用する理由を少し理解しています。しかし、私はまだそれらの声明についていくつかの不明確な質問があるので、誰かが私がそれらを見つけるのを手伝ってください。
質問は次のとおりです。
- コードはif本文のステートメントでのみ正しく実行できますか?試してみましたが、コントロールが完全に初期化されていないと問題が発生するようです。もっと問題があるのか分かりませんか?
- 呼び出し元を介してメソッドを直接(他の本体)インスタンスを呼び出すことの利点はどれですか?リソース(CPU、RAM)などを節約できますか?
ありがとう!