暂停/执行多线程程序(C#)中的一个线程
本文关键字:线程 一个 执行 多线程 程序 暂停 | 更新日期: 2023-09-27 18:20:00
为以下问题(C#)寻找一个好的设计。提前感谢您的回复!
- 多线程程序
- 至少两个螺纹
- 第一个线程一直在运行
- 第二个线程需要在每个工作日的上午9点到下午5点运行,否则将暂停
我的想法和我迄今为止尝试过的事情:
-
保持两个线程。对于需要在特定时间执行/暂停的程序,请使用Thread.Sleep。问题:线程。睡眠似乎根本不会暂停线程。线程一直在执行,就好像Thread.Sleep不存在一样。还不知道为什么(欢迎评论)。如果使用循环代替Thread.Sleep,那么如果循环时间过长(例如一整晚),线程就不会醒来。
-
添加第三个带有定时器的线程。第三个线程调用第二个线程的执行/暂停。
-
更好的想法???
您可以执行以下操作,
1) 主线程每隔一秒/分钟检查一次系统时间,如果是工作日,时间是上午9点,则生成新线程(子线程),然后在等待句柄上等待
2) 然后,子线程处理工作负载直到下午5点,然后在退出之前在等待句柄上向主线程发出信号
3) 主线程唤醒并继续等待下一个工作日上午9点