相信大家在.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;
}
// 主线程事情
}
提供一种思路,希望对阅读这篇文章的读者,能够起到抛砖引玉的效果。
原文地址:http://blog.csdn.net/qincode/article/details/30102251