我正在編寫一個多線程應用程序。這是我的情況。如何確保任何線程不會無限期地等待某些東西?
我從數據庫中抓取了一千條記錄。將它分成5個塊的列表對象。並創建5個線程來處理它們。我這樣做同樣的事情,每分鐘,直到我在數據庫中剩餘
Task.Factory.StartNew(() => ProcessRecords(listRecords))
內ProcessRecords方法記錄,有一個小的數據庫更新和一些發送郵件發生。 (我使用System.Net.Mail電子郵件和不使用數據庫操作的任何ORM)
現在我很擔心,一個線程可能不會因爲一些未知的問題完成。在這種情況下會發生什麼?比方說一個進程(甚至更多)不斷等待數據庫中的死鎖或者什麼,我的應用程序會發生什麼。它將繼續添加新的線程與新的記錄集,而一些永不結束的線程。在這種情況下,我如何實現類似超時的事情?
我要運行這個進程,終止它在5分鐘內,如果它是不能夠完成它。
無法修改[MSDN上的示例代碼](http://msdn.microsoft.com/library/dd537610.aspx)以滿足您的要求嗎? –
在開始新線程之前,我不想等待幾分鐘(或幾秒)。同時,如果在某些分鐘內沒有完成處理,我想關閉該線程。 – Romeo