我希望能够在不启动它来创建一个任务,类似于运行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?