リッチ テキスト ボックスにテキストを追加するスレッドがいくつかあります。Invoke() を使用すると、メインの UI スレッドとワーカー スレッドの間で非常に簡単にデッドロックが発生します。BeginInvoke() を使用すると、望ましくない非同期 UI 更新が発生します。私が判断できない後の段階ではなく、テキストがテキストボックスに即座に表示されるようにします。
タスクを実行するにはどうすればよいですか?
ありがとう!
リッチ テキスト ボックスにテキストを追加するスレッドがいくつかあります。Invoke() を使用すると、メインの UI スレッドとワーカー スレッドの間で非常に簡単にデッドロックが発生します。BeginInvoke() を使用すると、望ましくない非同期 UI 更新が発生します。私が判断できない後の段階ではなく、テキストがテキストボックスに即座に表示されるようにします。
タスクを実行するにはどうすればよいですか?
ありがとう!
UI スレッドに触れずに UI スレッドで魔法のように実行することはできません。
を呼び出す場合はInvoke
、UI スレッドがバックグラウンド スレッドの待機を停止するようにする必要があります。
ただし、BeginInvoke
代わりに電話する必要があります。
BeginInvoke
よりもインスタントではありませんInvoke
。唯一の違いはInvoke
、UI スレッドがデリゲートを実行する機会が得られるまで、呼び出し元のスレッドを強制的に待機させることです。
Invoke
UI スレッドがデリゲートを実行するのをバックグラウンド スレッドが待機する必要がある場合 (値を返す場合など) に呼び出します。
通常、常にBeginInvoke
;を呼び出す必要があります。通常、UI スレッドが解放されるまでバックグラウンド スレッドを待機させても意味がありません。