2015-11-01 216 views
-1

寻找适合以下问题的良好设计(C#)。在此先感谢您的回复!暂停/执行多线程程序中的一个线程(C#)

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

我我已经尝试过的想法和事情:

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

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

  • 更好的主意?

+0

你按小时支付线索,只是不想支付加班费吗?这看起来像是一个设计问题,如果你需要某些特定时间运行的东西,你应该使用一个调度器。假期,闰日等?事情很容易由一个工作调度程序处理......出于好奇,这个线程是做什么的,它只在工作时间运行? –

+1

这听起来像是[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你能让我们知道你的根本问题是什么吗? – Enigmativity

+0

@RonBeyer哈哈我不会按小时付费。而第二个线程不需要在节假日运行。纠正我,如果我错了,但工作时间表需要将线程变成可执行文件,对吗?不确定这是否适用,因为线程2在线程1运行时需要不断地与线程1交谈。 – o1o1o111

回答

0

你可以做到以下几点,

1)主线程不断检查系统时间每一秒/分钟,并产生新的线程(子)如果在工作日和时间是上午9点,然后等待在等待处理

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

3)主线程醒来,并继续等待下一次工作日上午9时

+0

感谢您的回答!这听起来不错,除了一件事......这是否意味着主线程必须有间隔小于1秒/分钟的循环? – o1o1o111