我有一个偶尔挂起的方法(在我无法修改但必须使用的 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 块?