2015-11-01 213 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