创建而不是开始一个自定义任务工厂的任务吗?(Create but not start a task

2019-08-17 06:23发布

我希望能够在不启动它来创建一个任务,类似于运行var a = new Task(); a.Start(); var a = new Task(); a.Start(); 但与自定义工厂。 工厂提供StartNew()但我无法找到这两个动作分离的方法。 这可能吗?

Answer 1:

一个TaskFactory基本上是两套默认选项(创建和延续),默认取消标记和任务调度。

您可以指定取消标记和创建选项时,你只是新的一个任务 - 然后启动它在任何你想要的调度。 所以:

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

应该比继续选择其他的工作。 当您添加的延续,无论如何,你可以直接指定延续选项才有意义。 有什么不覆盖这个?

(有一点要注意的是,基于任务的异步模式通常围绕它们由你看到他们反正时间开始围绕“热”的任务。所以,你可能要避免暴露在尚未启动的任务太广泛。)



文章来源: Create but not start a task with a custom task factory?