启动,停止,暂停和继续长时间运行的方法

时间:2011-03-31 21:17:12

标签: c# .net multithreading .net-4.0 task-parallel-library

我有一个运行时间很长的方法。我希望能够停止,暂停并继续执行该方法。我查看this question并且答案很好,但我想使用像TPL这样的更通用的库。 TPL有一个取消机制,但我找不到暂停/继续功能。

修改

感谢所有答案。但问题是我不写那种“长时间运行”的方法,我只是称之为那种方法。

3 个答案:

答案 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。