首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ThreadAbortException停止运行代码

ThreadAbortException停止运行代码
EN

Stack Overflow用户
提问于 2018-03-02 12:00:26
回答 1查看 627关注 0票数 0

我有以下例外

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

这是当代码试图发送电子邮件时。

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

代码执行一个foreach循环并运行良好,直到这个异常被击中,这时我在循环中捕获异常。然后,循环退出,foreach中的其他项中的非项被循环通过。

代码语言:javascript
复制
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()");
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 12:08:00

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49068717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档