簡體   English   中英

ThreadAbortException停止運行代碼

[英]ThreadAbortException stopping code from running

我有以下例外

System.Threading.ThreadAbortException:線程正在中止。 在System.Net.UnsafeNclNativeMethods.OSSOCK.recv(IntPtr socketHandle,字節* pinnedBuffer,Int32 len,SocketFlags socketFlags)

這是代碼嘗試發送電子郵件的時間。

我最大的問題是,發生這種情況時,即使我在try catch中捕獲並處理了該異常,它也會停止所有其余代碼的運行(這是一個asp.net網站)。

該代碼執行一個foreach循環並正常運行,直到遇到該異常為止,此時我在循環中捕獲了該異常。 然后,循環退出,並且foreach中的其他所有項都不循環。

if (entry.VatInvoiceRequested) 
{
   try 
   {
        using (var email = new EntryVatReceiptEmail(entry.Id)) 
        {
            if (email.NeedReceipt) 
            {
                email.SendEmail();
                email.SendEntryChargeMail();
            }
        }
    } 
    catch (Exception ex) 
    {
        Logger.Log4NetLogger.Error("Error sending VAT invoice", ex);
    }
    log.Debug("Entry Handler - About to return from Process()");
}

現在,我希望最后一條日志行會被調用,但是捕獲到異常時不會調用它。 只是為了澄清,捕獲中的日志正在運行並記錄到日志中。

每次捕獲后都會自動拋出ThreadAbortException,您只能在catch塊中執行Thread.ResetAbort()。但是不要這樣做,如果您的線程被中止,則需要找到確切的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM