我有一个运行时间很长的方法。我希望能够停止,暂停并继续执行该方法。我查看this question并且答案很好,但我想使用像TPL这样的更通用的库。 TPL有一个取消机制,但我找不到暂停/继续功能。
修改
感谢所有答案。但问题是我不写那种“长时间运行”的方法,我只是称之为那种方法。
答案 0 :(得分:2)
实现此目的的最简单方法是使用BackgroundWorker控件。它支持取消和进度报告。
http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx
http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/48305e65-cea6-4a88-8818-c122e152daa8
修改强>
哦,我明白了。好吧,没有“干净”的方式暂停和恢复你没有写的方法,除非你想暂停线程。并且,如果该方法不是线程安全的,那么您可能会运气不好。 http://msdn.microsoft.com/en-us/library/d00bd51t.aspx
答案 1 :(得分:1)
我想你已经回答了自己的问题。如果您需要暂停/继续功能,则需要设置一些协议。正如您使用重置事件引用的question的答案是可行的方法。
如果您只需要执行取消,就像您所说的任务并行库(TPL)将其与CancelationToken一起使用。
答案 2 :(得分:0)
如果它很长并需要持久化,您可能需要查看Windows Workflow Foundation。