首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# backgroundWorker有关问题

2013-08-29 
C# backgroundWorker问题请问怎么结束backgroundWorker的线程?我使用了backgroundWorker1.CancelAsync(),

C# backgroundWorker问题
请问怎么结束backgroundWorker的线程?我使用了backgroundWorker1.CancelAsync();,这个好像只是挂起线程而已,并没有彻底关闭掉backgroundWorker1的线程,我运行了backgroundWorker1.CancelAsync();然后再运行
 backgroundWorker1.RunWorkerAsync();会报错,说 backgroundWorker正忙的错,请问怎么彻底结束掉 backgroundWorker线程? C# 多线程
[解决办法]
很简单的,设一个全局变量,然后在线程的循环中检测到就退出。
[解决办法]
把 Socket s 放到外面,在其他地方关闭它,Accept 就会异常,这里加个 try,catch 中退出。
[解决办法]
参考这个文章:http://www.cnblogs.com/zhili/archive/2013/05/11/EAP.html
有很详细的分析过程
[解决办法]
要支持异步任务取消,你得先设置backgroundWorker1.WorkerSupportsCancellation= true;
backgroundWorker1.CancelAsync();只是将信号量置为取消状态
所以你还得在执行任务时判断

DoWork()
{
    //假设是循环任务
    while(!backgroundWorker1.CancellationPending)
    {
         do sth..
    }
}


报忙 就是因为你没有判断,导致先前的任务还没执行完(没有真正取消)
[解决办法]
在你的DoWork处理方法中写个
return;
这就结束了,还用别的什么呢?
[解决办法]
参考

热点排行