8

var a = new Task(); a.Start();実行に似ていますが、カスタム ファクトリを使用して、開始せずにタスクを作成できるようにしたいと考えています。ファクトリは を提供StartNew()しますが、2 つのアクションを分離する方法が見つかりません。これは可能ですか?

4

1 に答える 1

16

ATaskFactoryは基本的に、既定のオプション (作成と継続) の 2 つのセット、既定のキャンセル トークン、およびタスク スケジューラです。

タスクを新規作成するときに、キャンセル トークンと作成オプションを指定し、必要なスケジューラでタスクを開始できます。そう:

Task task = new Task(action,
                     factory.CancellationToken,
                     factory.CreationOptions);
...
task.Start(factory.Scheduler);

継続オプション以外の仕事をするべきです。継続オプションは、直接指定できる継続をとにかく追加する場合にのみ関連します。これに当てはまらないものはありますか?

(注意すべきことの 1 つは、タスク ベースの非同期パターンは一般に、いずれにせよそれらが表示されるまでに開始される「ホット」タスクを中心に展開することです。そのため、開始されていないタスクをあまりにも広く公開することは避けたいと思うでしょう。)

于 2013-02-28T19:28:02.913 に答える