0

他のスレッドで作成されたオブジェクトにInvokeandメソッドを使用する方法はありますか? InvokeRequiredより直接的でメモリ消費の少ない方法はありますか? おそらく、ステート マシンまたはスレッド コントロールでしょうか。

このメソッドのリソース使用量について心配するのは時間の無駄ですか?

私はこの呼び出し方法を使用しています: http://tech.xster.net/tips/invoke-ui-changes-across-threads-on-vb-net/

VS 2012 で VB.NET を使用しています

4

1 に答える 1

1

これは、医師の通常のアドバイス「痛い場合はやらないでください」に強く当てはまります。

UI で実行する必要があるコードからスレッド化されたコードを分離することを強調する .NET パターンがいくつかあります。BackgroundWorker は長い間利用可能でした。その ProgressChanged および RunWorkerCompleted イベントが UI スレッドでどのように実行されるかに注意してください。自分自身を呼び出さずに UI を更新するのに適した場所です。

.NET 4 Task クラスは、TaskScheduler.FromCurrentSynchronizationContext() メソッドを渡します。これは、UI スレッドで実行されるタスクをチェーンするのに適した方法であり、非同期で実行される以前のタスクの結果で UI を更新することを非常に明確に意図しています。VS2012 は、Async および Await キーワードを備えたさらに別の武器を提供します。書きたくないコードを書かないようにするためのすべての良い方法。

于 2013-04-14T17:32:18.177 に答える