首页 文章

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

提问于
浏览
-1

为以下问题寻找一个好的设计(C#) . 在此先感谢您的回复!

  • 多线程程序

  • 至少有两个线程

  • 第一个线程一直在运行

  • 第二个线程需要在每个工作日的上午9点到下午5点运行,否则暂停

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

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

  • 使用计时器添加第三个线程 . 第三个线程唤起第二个线程的执行/暂停 .

  • 更好的想法???

1 回答

  • 0

    你可以做到以下几点,

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

    2)然后子线程执行工作量直到下午5点,然后在退出之前用信号通知等待句柄上的主线程

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

相关问题