【发布时间】:2016-04-05 07:09:52
【问题描述】:
我有一个长时间运行的代码,我想要暂停恢复功能。在 start 方法中,我正在编写我的代码并启动新的异步任务。但我希望按需暂停/恢复此任务。
var myTask;
public void start()
{
myTask = Task.Factory.StartNew(() =>
{
///my business logic
});
}
【问题讨论】:
-
你的代码是在循环还是什么?
-
任务调度是协作的。要暂停任务,您需要使用某种方式与它沟通;例如,通过设置哨兵标志。但是,观察和尊重国旗将取决于任务。如果你想要抢占式调度(你可以强制一个暂停),你需要恢复到线程。请注意,即使线程在执行本机调用时也不能暂停。
-
向最优秀的人学习。这是 Stephen Toub 对这个问题的看法:blogs.msdn.com/b/pfxteam/archive/2013/01/13/…
-
我很困惑,你标记了这个 C# 4.0,还标记了
async-await,这是 C# 5.0 的一个特性。那么它是什么? -
sorry svick (: 它不是 async-await,只是 C# 4.0 TPL 特性
标签: .net c#-4.0 asynchronous async-await