別のスレッドから GUI を更新するにはどうすればいいですか? 質問する

別のスレッドから GUI を更新するにはどうすればいいですか? 質問する

Labelを別の から更新する最も簡単な方法はどれですかThread?

  • 私はFormで を実行しておりthread1、そこから別のスレッド ( thread2) を開始しています。

  • がいくつかのファイルを処理している間、の作業の現在のステータスを の にthread2更新したいと思います。LabelFormthread2

どうすればそれができるでしょうか?

ベストアンサー1

最も簡単な方法は、匿名メソッドを渡すことです。Label.Invoke:

// Running on the worker thread
string newText = "abc";
form.Label.Invoke((MethodInvoker)delegate {
    // Running on the UI thread
    form.Label.Text = newText;
});
// Back on the worker thread

完了するまで実行をブロックすることに注意してくださいInvoke。これは同期コードです。質問では非同期コードについては尋ねていませんが、Stack Overflow のコンテンツ非同期コードの書き方について学びたいときに役立ちます。

おすすめ記事