UI の応答性を維持し、進行状況を報告しながら、4 つの機能を並行して実行する必要があります。バックグラウンド ワーカーはこれを行う最適な方法ですか? どうすればwinformでこれを行うことができますか?
質問する
2023 次
3 に答える
1
はい、タスク並列ライブラリを使用します。次のような並列タスクを実行できます
Parallel.Invoke(() => DoSomeWork(), () => DoSomeOtherWork());
そして、Background Worker よりも多くのオプションを提供します
より多くの参照: TPL
于 2012-07-11T08:56:08.047 に答える
1
を使用してこれを行うことができますが、 Task Parallel LibraryBackgroundWorker
をお勧めします。あなたが望むもののために、次のようなものを使うことができます
TaskCreationOptions atp = TaskCreationOptions.AttachedToParent;
Task.Factory.StartNew(() =>
{
Task.Factory.StartNew(() => { SomeMethod() }, atp);
Task.Factory.StartNew(() => { SomeOtherMethod() }, atp);
}).ContinueWith( cont => { Console.WriteLine("Finished!") });
これは子タスクを使用しています。ここでは 2 つあるので、4 つ使用します。TPL は真の同時操作の数に制限があるスレッド プールを使用するため、注意すべきいくつかの制限があります。このhttps://stackoverflow.com/a/11229896/626442を確認してください。TPL と汎用スレッドの詳細については、次を参照してください。
および(特にTPLの場合)
于 2012-07-11T09:06:27.530 に答える
0
最良の方法はTask
、の代わりにsを使用することです。BackgroundWorker
Task
ここから進捗状況を報告する方法を見ることができます:http: //nitoprograms.blogspot.co.il/2012/02/reporting-progress-from-async-tasks.html
于 2012-07-11T08:49:55.303 に答える