すべて:不正なクロススレッディング*が検出されないのはなぜですか?
私はWindowsフォームとボタンを作成しました。別のスレッドでは、ボタンのテキストを変更しようとしましたが、クラッシュします。ボタンの色を変更しようとすると、確実に成功します。私はあなたがWindowsフォームコントロールのプロパティを変更した場合、クラッシュすると思っていました。誰かが何が起こっているか教えていただけますか?
はここでコメントアウト行にクラッシュしていない私のコードです(しかし、私はそれが必要と思った):
Thread thr = new Thread(() => {
//myButton.ForeColor = Color.Purple; // this never causes a crash :=(
myButton.Text = Color.Purple.ToString(); // this always causes a crash.
}); //
thr.Start();
任意の洞察力をいただければ幸いです!
マイケル
説明をありがとう。レコードのために、Microsoftのドキュメントではあいまいさが許されません。「デバッガでアプリケーションを実行していて、コントロールを作成したスレッド以外のスレッドがそのコントロールを呼び出そうとすると、デバッガはInvalidOperationExceptionを発生させます"私は彼らがもっと細かい詳細を提供してくれたらと思っています... –
ドキュメンテーションが完璧だったら、StackOverflowのようなサイトは必要ありません:)それは98%正確です。 –
学問的興味のために、あなたは石炭の顔での個人的な経験から見つけたか、あなた自身で調査しましたか(もしそうならば)、あるいはどこかで実際に文書化されていますか? – tomfanning