0

UI の応答性を維持し、進行状況を報告しながら、4 つの機能を並行して実行する必要があります。バックグラウンド ワーカーはこれを行う最適な方法ですか? どうすればwinformでこれを行うことができますか?

4

3 に答える 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 と汎用スレッドの詳細については、次を参照してください。

J. Albahari の C# でのスレッド化

および(特に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 に答える