我有一个偶尔挂起的方法(在一个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。 –