C# 线程中止异常,查找谁在调用中止



我有作为存储过程实现的 C# 方法。存储过程从 SQL Server 运行

该方法只是启动一个单独的本机进程,然后使用HasExited&WaitForExit(500)方法循环,直到本机进程退出。

在某些情况下,本机进程可能需要几个小时才能退出,当它退出时,C# 方法会间歇性地收到 ThreadAbortException。下面是堆栈

System.Threading.ThreadAbortException: Thread was being aborted.
at System.Threading.WaitHandle.WaitOneNative(SafeHandle waitableSafeHandle, UInt32 millisecondsTimeout, Boolean hasThreadAffinity, Boolean exitContext)
at System.Threading.WaitHandle.InternalWaitOne(SafeHandle waitableSafeHandle, Int64 millisecondsTimeout, Boolean hasThreadAffinity, Boolean exitContext)
at System.Threading.WaitHandle.WaitOne(Int32 millisecondsTimeout, Boolean exitContext)
at System.Diagnostics.Process.WaitForExit(Int32 milliseconds)
at MYSQLCLRLib.MYAPP.MyMethod(String operation, String executable, String bkParam, String stdin)

我已经检查了我的代码,没有调用Thread.Abort()。如何确定发送中止的对象和原因?

如果您粘贴尝试捕获块的一些片段,那就太好了。 但在你的情况下线程。Abort() 或 Abort 应该在 try 块中的某个地方。支持,如果你的线程在try块内你仍然想中止那个线程,不能到处写中止所以。

try
{
.. Aborting thread here

}
catch(ThreadAbortException)
{
throw;
}
catch(Exception ex)
{
..Exception code
}

最新更新