[英]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.