我有一個偶爾掛起的方法(在一個DLL我不能修改,但必須使用)。如果我再次運行它通常會正常工作。我想知道是否可以創建一個後臺線程,等待20分鐘,然後在程序中拋出異常。我可以使用另一個線程檢測掛起的進程並從中恢復嗎?
var triesLeft = 5;
while (triesLeft > 0) {
try {
var t = new Thread(() => { wait(20 minutes); throw new ApplicationHungException();})
t.Start();
Object o = MethodThatHangsForever10PercentOfTheTime();
} catch (ApplicationHungException e) {
triesLeft--;
}
}
t.Abort();
這不起作用,因爲異常不會傳遞給它包含在try catch塊。有沒有一種方法可以讓我獲得線程給它的例外try catch塊?
僅供參考,沒有「C#線程」這樣的東西。您似乎指的是.NET管理的線程。 –
爲什麼你需要線程在這裏,只需將代碼放在「methodthathands」的位置 - 比你會發現異常 –
@IlyaBursov'MethodThatHangsForever'來自我假設的DLL。 –