我有一個windows服務,偶爾會在引發未處理的ThreadInteruptedException時崩潰並停止。此服務的主要功能是每x分鐘運行一次同步(用戶定義的時間範圍)。我只有一次使用Thread.Interrupt()方法兩次(因爲我知道它有多混亂) -Windows服務中未處理的ThreadInteruptedException
客戶端可以通過TCP連接進行連接,但是如果數據發送到客戶端的速度太快爲了解決這個問題,它可以發送一個「暫停」信號回服務,然後在所有數據處理完畢後恢復(這可能是無線設備,可能有多個客戶端以不同的速度運行,所以我沒有想在TCP緩衝區中留下任何這一點)。暫停然後使線程進入休眠狀態,然後繼續中斷並繼續。
另一種用途是在TCP連接最初連接時出現類似的情況。
但是,我已經讓這個服務運行,即使我沒有連接任何客戶端也會拋出這個異常!沒有TCP連接正在建立,因此這些中斷方法都沒有達成!我已經把try語句放在服務中的每個Thread.Sleep()周圍來捕獲這個異常,但是這個異常仍在被提出!
我確定我錯過了一些非常明顯的事情,但它只是不跳出來,我一直在尋找幾天!
- 有沒有人遇到過這個 之前?
- 沒有人有任何便宜 替代睡眠和 中斷線程(不 而(暫停)繼續;)
- 有誰知道的 調試未處理的異常 這樣一個簡單的方法?我什至不能看到 堆棧來找出這是從哪裏來的 !
- 其他方法可以拋出ThreadInterruptedException嗎?或者是否有其他方法會導致睡眠線程中斷?
在此先感謝
TIE不會從天而降。通過刪除Interrupt()調用並將其替換爲Auto/ManualResetEvent.Set()來改進您的代碼。 – 2011-04-07 11:55:25
偉大的提示漢斯,沒有更多的錯誤!謝謝 – Connell 2011-04-14 13:10:06