我目前正在使用一個使用來自不同部門的程序集的軟件。
我把這個組件的方法是這樣的:取消命令的執行時間太長
using (var connection = (IConnection) Factory.GetObject(typeof (IConnection)))
使用完全正常工作的代碼。但是在最後幾分鐘裏,當我嘗試啓動它時,似乎我的程序沒有做任何事情。在調試過程中按下暫停,表明它在上面的線上「卡住」了。
我的猜測是他們只是在做一些維護或某些事情,但這不是重點。
所以我雖然很高興告訴用戶如果程序無法啓動,出了什麼問題。簡單的東西就像
MessageBox.Show("Could not connect", "Connection Error");
然後關閉程序。我的問題是:
如何在一段時間後終止命令的執行並跳到別的地方?
我的猜測是將它移動到一個單獨的線程,然後讓調用線程休眠幾秒鐘,之後它會處理額外的線程,如果它尚未完成。但是,這似乎真的對我來說很髒,這是一個更好的方法。
如果你的'IConnection'是'SqlConnection',你可以使用它提供的默認連接超時。 – 2016-01-13 10:36:24
@Kilanny雖然使用非常相似,但它不是SqlConnection,沒有人似乎打擾實現超時。 – Wilsu
否則使用'Timer'來檢查執行,當超時時它應該終止作業 – 2016-01-13 10:44:02