我的应用程序中有一个线程正在运行可能导致调用堆栈损坏的代码(我的应用程序是dll的测试工具)。
假设我有一种检测子线程是否行为不正常的方法,我将如何终止它?从我读到的,在行为不当的线程上调用Thread.Abort()将等同于在其中引发异常。我担心这不是一个好主意,只要线程的调用堆栈可能已损坏。任何建议?< / p>
答案 0 :(得分:6)
如果您正在运行可能损坏进程的不受信任的代码,则在单独的进程中运行该代码并使用进程间通信与其进行通信。如果要提前终止不受信任的代码,可以直接终止进程。
答案 1 :(得分:3)
如果代码行为不当,它可以执行任何,并且它可以影响整个过程中任何线程上的任何内容。
最可靠的解决方案是在单独的进程中运行不受信任的代码,如果行为不正常则终止进程。
答案 2 :(得分:3)
将DLL加载到新的AppDomain中,并使用AppDomain.DoCallBack方法从那里运行DLL中的代码。
答案 3 :(得分:0)
除了接受答案之外,我想补充一点,忽略Thread.Abort很容易。
try
{
...
}
catch (ThreadAbortException)
{
Thread.ResetAbort();
}