C#后台工作者

时间:2010-07-18 10:18:02

标签: c# backgroundworker

我有一个在后台工作中运行的任务。单击开始按钮用户启动该过程并有一个取消按钮取消处理。

当用户点击取消时,我想显示一个消息框“进程尚未完成,是否要继续”。

这里我希望只有在用户输入后才能进行处理。然后,然后想要停止背景线程。谁可以帮我这个事。反正有没有停止背景工作者一段时间。任何一种帮助将不胜感激。

2 个答案:

答案 0 :(得分:5)

没有内置。您可以告诉您的代码(在每个[n]循环迭代等)检查类似ManualResetEvent的内容,看它是否应该继续运行(同时检查取消) 。我不建议暂停线程(Thread.Suspend),因为您当时不知道它可能包含哪些锁等。

另一方面......为什么不让它运行直到你知道它应该被取消?然后你只需要检查取消(有一个标志)每[n]次迭代......

答案 1 :(得分:2)

如果BackgroundWorker正在处理两个线程都可见的对象,则可以在等待用户在对话框中回答问题时“锁定”该对象。这将导致worker的线程停止,直到生成对话框的线程结束锁定。