使用自定义任务工厂创建但不启动任务?

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

TaskFactory基本上是两组默认选项(创建和继续),默认取消令牌和任务调度程序。

您可以在刚刚创建任务时指定取消令牌和创建选项 – 然后在您想要的任何计划程序上启动它。 所以:

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

应该做的是继续选项以外的工作。 延迟选项仅在您添加延续时才相关,您可以直接指定。 有什么不包括在内吗?

(需要注意的一点是,基于任务的异步模式通常围绕“热”任务展开,这些任务是在你看到它们的时候开始的。所以你可能想避免过多地暴露未启动的任务。)