ThreadAbortException停止运行代码

问题描述 投票:0回答:1

我有以下例外

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

当代码尝试发送电子邮件时。

我最大的问题是,当发生这种情况时,它会阻止我的所有其余代码运行(这是一个asp.net站点),即使我在try catch中捕获异常并处理它。

代码执行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()");
}

现在,我希望调用最后一个日志行,但是当异常被捕获时不会调用它。只是为了澄清捕获的日志记录正在工作并记录到日志中。

c# asp.net .net
1个回答
1
投票

ThreadAbortException在每次catch后自动重​​新抛出,你只能在catch块中执行Thread.ResetAbort()但是不要这样做,如果你的线程被中止,你需要找到确切的原因。

© www.soinside.com 2019 - 2024. All rights reserved.