【发布时间】:2013-04-12 06:35:30
【问题描述】:
我想使用 Task 类型,但不是使用 TPL,而是使用 .NET4.5/C#async。
问题是,我对我的案子有一些要求:
- 我希望任务同步运行(有人推荐
RunSynchronously(),有人推荐Wait(),还有人推荐ContinueWith(_, TaskContinuationOptions.ExecuteSynchronously),这里哪一个合适?)。 - 我希望任务在同一个线程中运行(所以,根本不使用线程池)。
- 我希望任务在某个超时过后停止,并抛出异常。
对于后者,我想我需要Task.Delay(),但我不确定如何将它与前两个要求结合起来。
谢谢
【问题讨论】:
-
Task是任务并行库 (TPL) 的一部分,它确实在幕后使用了ThreadPool,这意味着它由TaskSchedule安排,最终将在不同的平台上运行线程。 -
不,有办法通过使用适当的调度程序 AFAIU 使其不使用线程池
-
使用
Task对象的全部意义在于执行异步操作,正如类本身的文档所表明的那样。 -
我知道重点是什么,我只是想做点不一样的事情
-
我不明白你为什么要在这里使用
Task。接受超时参数的普通方法不适合您吗?
标签: c# task-parallel-library async-await c#-5.0 continuations