[英]C# ThreadAbortException, find who is calling the abort
我有作為存儲過程實現的 C# 方法。 存儲過程從 SQL 服務器運行
該方法只是啟動一個單獨的本機進程,然后使用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()
。 我如何確定誰以及為什么發送中止?
如果您粘貼一些 try catch 塊的片段,那就太好了。 但在你的情況下 thread.Abort() 或 Abort 應該在 try 塊中的某個地方。假設,如果你的線程在 try 塊中你仍然想中止那個線程,那么不能到處寫 abort。
try
{
.. Aborting thread here
}
catch(ThreadAbortException)
{
throw;
}
catch(Exception ex)
{
..Exception code
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.