【发布时间】:2009-11-10 09:37:12
【问题描述】:
我打电话 obackgroundworker.CancelAsync(); 在后台工作人员当前在另一个线程中做一些工作,然后使用 而(obackgroundworker.IsBusy == true) 在退出应用程序之前等待它完成(以防用户在线程不在处理时改变主意并且我想干净地关闭)
取消挂起的平面正确设置为true,但线程没有退出,在我拥有的工作线程中:
backgroundworker obackgroundworker = (backgroundworker)sender;
if (obackgroundworker.cancellationpending == true)
e.cancel = true;
应该检查取消是否挂起,然后将取消标志设置为真,我认为这也会导致线程实际终止......?还是在检测到取消实际结束时我需要从线程调用其他函数?
我已经阅读了很多使用与上面完全相同的后台工作人员的示例,并且没有报告任何问题。
来源:
http://www.albahari.com/threading/part3.aspx http://www.dotneat.net/2009/02/10/BackgroundworkerExample.aspx http://www.codeproject.com/KB/cpp/BackgroundWorker_Threads.aspx
谢谢
【问题讨论】:
-
这是obackgroundworker.IsBusy的正确用法吗?在我打电话取消后,这会变成假吗?目前,即使在请求取消线程之后,也存在无限循环。
标签: c# backgroundworker request-cancelling