4

serialport からデータを受け取るクラスがあります。action<T> delegateテキストボックスに表示されるフォームにデータを渡していました。textbox問題は、次のように表示されているため、コントロールにアクセスできなかったことですCross-thread operation not valid: Control accessed from a thread other than the thread it was created on

だから私は設定Control.CheckForIllegalCrossThreadCalls = falseしました、そしてそれは働いています。

それをするのは良い考えですか?またはそれを行うより良い方法があります。

ありがとう

4

3 に答える 3

1

そうするのは得策ではありません。

推奨される方法は、Control.InvokeRequired == true かどうかを確認することだと思います。そうであれば、UI スレッドへのメソッド呼び出しをマーシャリングする適切なデリゲートで Control.Invoke を使用します。

于 2013-03-20T05:31:42.777 に答える
1

以下のように書くか

       try
        {
            Object obj=null;
            var result = obj.ToString();
        }
        catch (Exception )
        {


        }

あなたの答えはNOになると確信しています。同様のことは Control.CheckForIllegalCrossThreadCalls = false の場合です。例外を食べるだけですが、推定クライアントに未知の結果を提示します

于 2013-03-20T05:45:45.320 に答える