如何终止已使其调用堆栈损坏的.NET线程?

时间:2010-03-15 19:34:00

标签: c# multithreading

我的应用程序中有一个线程正在运行可能导致调用堆栈损坏的代码(我的应用程序是dll的测试工具)。

假设我有一种检测子线程是否行为不正常的方法,我将如何终止它?从我读到的,在行为不当的线程上调用Thread.Abort()将等同于在其中引发异常。我担心这不是一个好主意,只要线程的调用堆栈可能已损坏。任何建议?< / p>

4 个答案:

答案 0 :(得分:6)

如果您正在运行可能损坏进程的不受信任的代码,则在单独的进程中运行该代码并使用进程间通信与其进行通信。如果要提前终止不受信任的代码,可以直接终止进程。

答案 1 :(得分:3)

如果代码行为不当,它可以执行任何,并且它可以影响整个过程中任何线程上的任何内容。

最可靠的解决方案是在单独的进程中运行不受信任的代码,如果行为不正常则终止进程。

答案 2 :(得分:3)

将DLL加载到新的AppDomain中,并使用AppDomain.DoCallBack方法从那里运行DLL中的代码。

答案 3 :(得分:0)

除了接受答案之外,我想补充一点,忽略Thread.Abort很容易。

try
{
    ...
}
catch (ThreadAbortException)
{
   Thread.ResetAbort();
}