0

C# winform アプリでは、オブジェクトが呼び出しているスタック ツリーの奥深くにある doWork メソッドにバックグラウンド ワーカーがあります。

            // This is ok to be called on non UI thread because 
            // MessageBox has its own message pump
            result = MessageBox.Show(form, message, AppStrings.low_space_title, MessageBoxButtons.YesNo, MessageBoxIcon.Question);

コメントは以前の開発者からのもので、このコードは明らかに機能していましたが、現在は機能していないようです..私が得ているエラーは

   Cross-thread operation not valid: Control 'FormMain' accessed from a thread other than the thread it was created on.

これを解決するために何か助けていただければ幸いです

ありがとう、

4

1 に答える 1

2

MessageBoxを所有するとしてメイン フォーム (UI スレッドで作成され、したがってバインドされている) を割り当てていない場合にのみ、別のスレッドから呼び出されても問題ありません。IWin32WindowMessagebox

代わりに次のオーバーロードを使用してください。

result = MessageBox.Show(message, AppStrings.low_space_title, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
于 2013-01-02T12:19:18.633 に答える