科学家的发明故事,老张家黑膏药,情感龙门阵
相信大家在.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; } // 主线程事情 }
提供一种思路,希望对这篇文章的读者,能够起到抛砖引玉的效果。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论