为以下问题寻找一个好的设计(C#) . 在此先感谢您的回复!
-
多线程程序
-
至少有两个线程
-
第一个线程一直在运行
-
第二个线程需要在每个工作日的上午9点到下午5点运行,否则暂停
到目前为止我的想法和事情:
-
保持双线程 . 对于需要在特定时间执行/暂停的那个,请使用Thread.Sleep . 问题:Thread.Sleep似乎根本没有暂停线程 . 线程继续执行,就好像Thread.Sleep不存在一样 . 还没弄明白为什么(评论欢迎) . 如果使用循环代替Thread.Sleep,如果线程循环太长(例如一整夜),线程将不会唤醒 .
-
使用计时器添加第三个线程 . 第三个线程唤起第二个线程的执行/暂停 .
-
更好的想法???
1 回答
你可以做到以下几点,
1)主线程每秒/分钟检查系统时间,如果工作日和时间是早上9点,则生成新线程(子),然后等待等待句柄
2)然后子线程执行工作量直到下午5点,然后在退出之前用信号通知等待句柄上的主线程
3)主线程唤醒并继续等待下一个工作日上午9点