-1

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

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

到目前为止我尝试过的想法和事情:

  • 保持双线程。对于需要在特定时间执行/暂停的操作,请使用 Thread.Sleep。问题:Thread.Sleep 似乎根本没有暂停线程。线程继续执行,就好像 Thread.Sleep 不存在一样。还没弄清楚为什么(欢迎评论)。如果使用循环代替 Thread.Sleep,如果循环时间过长(例如一整夜),线程将不会唤醒。

  • 添加带有计时器的第三个线程。这第三个线程唤起了第二个线程的执行/暂停。

  • 更好的想法???

4

1 回答 1

0

您可以执行以下操作,

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

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

3)主线程唤醒,继续等待下个工作日早上9点

于 2015-11-01T03:14:34.157 回答