暂停/执行多线程程序(C#)中的一个线程



为以下问题(C#)寻找一个好的设计。提前感谢您的回复!

  • 多线程程序
  • 至少两个螺纹
  • 第一个线程一直在运行
  • 第二个线程需要在每个工作日的上午9点到下午5点运行,否则将暂停

我的想法和我迄今为止尝试过的事情:

  • 保持两个线程。对于需要在特定时间执行/暂停的程序,请使用Thread.Sleep。问题:线程。睡眠似乎根本不会暂停线程。线程一直在执行,就好像Thread.Sleep不存在一样。还不知道为什么(欢迎评论)。如果使用循环代替Thread.Sleep,那么如果循环时间过长(例如一整晚),线程就不会醒来。

  • 添加第三个带有定时器的线程。第三个线程调用第二个线程的执行/暂停。

  • 更好的想法???

您可以执行以下操作,

1) 主线程每隔一秒/分钟检查一次系统时间,如果是工作日,时间是上午9点,则生成新线程(子线程),然后在等待句柄上等待

2) 然后,子线程处理工作负载直到下午5点,然后在退出之前在等待句柄上向主线程发出信号

3) 主线程唤醒并继续等待下一个工作日上午9点

最新更新