C# 寫了個windows服務,服務定時呼叫某方法,方法里會新建2個執行緒來呼叫其他方法,現在會有某個執行緒沒結束,然后服務到了定時再啟動的時間,又新建了同樣方法的執行緒,如何能判斷該執行緒狀態,想在定時再啟動的時候銷毀此執行緒
uj5u.com熱心網友回復:
極端情況,每次都沒有結果,你都停掉前面的,那么你可能永遠拿不到結果。請等著前面的結束,當然給前面的設定為超時結束(最大執行時間,你定時器的2,3個周期)
或者
限流佇列,你不要急著產生執行緒。先把任務加到限流佇列。在由調度器自己消費調他
(此處需要限流,極端情況,生產的趕不上消費的,佇列就會無限加,結果是崩潰。同時限流的另一個目的是,你可以檢查堆積數量,假設你另外的事件發現任務長期處于滿負荷狀態,并且還有新任務加入,你需要報警寫日志。此時你就知道,要么是你那兩個2執行緒根本就來不及處理,需要優化。要么就是你這個定時器根本不符合實際的生產能力,需要調整時間)
uj5u.com熱心網友回復:
定時器的特定確實是這樣,不管這一輪有沒有完成,到時間間隔就會啟動新的執行緒
如果前一輪都沒有執行完,其實得問兩個問題
1. 未完成的會不會影響后一輪的執行?
2. 定時器間隔是不是過小?該優化程式或者調大timer的間隔
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/213181.html
標籤:C#
下一篇:vs2015無法打開,尋求幫助
