.NET中多线程处理

作者:湖北诺贝特科技有限公司  来源:www.nbt158.com未知  发布时间:2017-09-04 13:25:55
.NET中多线程处理

相信大家在.NET中处理大量数据的时候,不可避免的会用到线程。

那么线程的几个方法,大家应该都知道:

定义四个线程

ReceiveThread = new Thread(new ThreadStart(ReceiveFunc)); SaveThread = new Thread(new ThreadStart(SaveFunc)); SendThread = new Thread(new ThreadStart(SendFunc)); DataThread = new Thread(new ThreadStart(showDataToList));实例化线程: public Thread ReceiveThread { get; set; } public Thread SaveThread { get; set; } public Thread SendThread { get; set; } public Thread DataThread { get; set; }

开启线程:

ReceiveThread.Start(); // 启动线程 DataThread.Start(); SendThread.Start(); DataThread.Start();挂起线程: ReceiveThread.Suspend(); // 挂起线程 DataThread.Suspend(); SendThread.Suspend(); DataThread.Suspend();恢复线程: ReceiveThread.Resume(); // 恢复线程 DataThread.Resume(); SendThread.Resume(); DataThread.Resume();终止线程: ReceiveThread.Abort(); // 终止线程 DataThread.Abort(); SendThread.Abort(); DataThread.Abort();
你多试几次,挂起和恢复,你会发现线程死掉了;

那么出现这个问题,怎么解决呢?

我想了一个比较笨的方法,在线程的主循环中,添加一个while循环,通过一个flag控制线程sleep,当需要线程暂停的时候,flag置ON,那么线程就会进入while循环,不停的sleep,当需要恢复线程的时候,将flag直接off掉,线程就恢复,而且,站群软件,反复多次,线程运行正常;

实例代码:

while (Flag_Receive || ReceiveThreadSleepFlag) { while (ReceiveThreadSleepFlag) { Thread.Sleep(1); // 线程sleep等待 continue; } // 主线程事情 }
上面的Flag_Receive是主线程运行flag,ReceiveThreadSleepFlag是线程sleep的flag。


提供一种思路,希望对阅读这篇文章的读者,能够起到抛砖引玉的效果。



企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:恩施SEO http://enshi.4567w.com


上一篇:中国SEO行业领军人物排行榜
下一篇:最后一页