问题标签 [threadabortexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
711 浏览

visual-studio - Visual Studio 没有捕捉到 ThreadAbortException

我已经在 VS 调试异常对话框中设置了 ThreadAbortException,但它永远不会中断,即使我在我的代码中明确地使用了 Thread.Abort()。

我可以在控制台中看到条目,例如:

有什么方法可以让 VS 打破这些异常?(我在桌面使用 VS Express 2012,但如果需要可以访问完整的 VS)

0 投票
1 回答
713 浏览

c# - c# - ThreadAbortException 重新抛出

MSDN 说,对于Thread.Abort方法-

When this method is invoked on a thread, the system throws a ThreadAbortException in the thread to abort it. ThreadAbortException is a special exception that can be caught by application code, but is re-thrown at the end of the catch block unless ResetAbort is called. ResetAbort cancels the request to abort, and prevents the ThreadAbortException from terminating the thread. Unexecuted finally blocks are executed before the thread is aborted.

So the exception would be thrown only once from the most immediate catch block, or from all encapsulating catch blocks ? Also, when saying unexecuted finally blocks are executed, does it include both totally unexecuted and partially executed blocks?

0 投票
3 回答
842 浏览

c# - 可以解释 PrepareConstrainedRegions 和 Thread.Abort 的这种意外行为吗?

今晚我在玩Constrained Execution Regions,以更好地完善我对更精细细节的理解。我以前偶尔使用过它们,但在那些情况下,我大多严格遵守既定模式。无论如何,我注意到一些我无法完全解释的特殊情况。

考虑以下代码。请注意,我以 .NET 4.5 为目标,并在没有附加调试器的情况下使用发布版本对其进行了测试。

你认为这个程序的输出会是什么?

  1. didfinally=真
  2. didfinally=假

在你猜测之前阅读文档。我包括下面的相关部分。

受约束的执行区 (CER) 是编写可靠托管代码的机制的一部分。CER 定义了一个区域,其中限制公共语言运行时 (CLR) 引发带外异常,这会阻止该区域中的代码完整执行。在该区域内,用户代码被限制执行会导致抛出带外异常的代码。PrepareConstrainedRegions 方法必须紧接在 try 块之前,并将 catch、finally 和 fault 块标记为受约束的执行区域。一旦标记为受限区域,代码只能调用具有强可靠性契约的其他代码,并且代码不应分配或虚拟调用未准备或不可靠的方法,除非代码准备好处理故障。CLR 延迟在 CER 中执行的代码的线程中止。

可靠性 try/catch/finally 是一种异常处理机制,与非托管版本具有相同级别的可预测性保证。catch/finally 块是 CER。块中的方法需要提前准备并且必须是不可中断的。

我现在特别关心的是防止线程中止。有两种:一种是普通Thread.Abort的通过,另一种是 CLR 主机可以对你进行所有中世纪的操作并强制中止。finally块已经Thread.Abort在某种程度上受到保护。然后,如果您将该finally块声明为 CER,那么您还将获得 CLR 主机中止的额外保护……至少我认为这是理论。

因此,根据我认为我所知道的,我猜到了#1。它应该打印 didfinally=True。当ThreadAbortException代码仍在try块中时被注入,然后 CLR 允许finally块按预期运行,即使没有 CER,对吗?

好吧,这不是我得到的结果。我得到了一个完全出乎意料的结果。#1或#2都没有发生在我身上。相反,我的程序挂在Thread.Abort. 这是我观察到的。

  • PrepareConstrainedRegions延迟线程的存在会在try块内中止。
  • 没有PrepareConstrainedRegions允许它们在try块中。

所以百万美元的问题是为什么?该文档在我能看到的任何地方都没有提到这种行为。事实上,我正在阅读的大部分内容实际上是建议您将关键的不可中断代码放在finally块中,专门用于防止线程中止。

也许,除了块之外,还会PrepareConstrainedRegions延迟一个块中的正常中止。但是 CLR 主机中止仅在CER 块中延迟?谁能提供更清楚的说明?tryfinallyfinally

0 投票
0 回答
1632 浏览

c# - WaitHandle.WaitOne 可以抛出 ThreadAbortException 吗?

我收到以下异常:

我很困惑它是如何发生的。我确定我不会中止这个特定线程,尽管我的代码可能会中止另一个线程(包括设置 WaitHandle 的线程)。这让我相信,要么是框架引发了异常,要么是另一个线程的线程异常异常以某种方式渗入了这个线程。我认为这两者都不可能。

所以,如果我没有在这个线程上调用 Thread.Abort(),它怎么会以 ThreadAbortException 结束呢?

0 投票
2 回答
1052 浏览

c# - 为什么在这段代码中没有捕获到带有两个进程和输出重定向的 ThreadAbortException?

我下面的代码仅用于问题说明。请忽略使用 CodeDom 编译源代码的部分。此外,如果您尝试它,它会使“其他进程”可执行文件运行并消耗 CPU 时间,这没有好处。

真正的问题是我启动线程,然后中止线程并看到“线程中止启动”消息并且有

在 mscorlib.dll 中发生了“System.Threading.ThreadAbortException”类型的第一次机会异常

调试器输出中的消息,但既不调用catch也不finally调用块,并且这些块没有输出。

当然,因为为处理重定向输出而创建的额外线程并没有中止程序永远挂起,但是......

为什么被调用catch而不finally被调用?

0 投票
1 回答
170 浏览

threadabortexception - 并发用户访问时 XslCompiledTransform 发生 ThreadAbortException

我正在我的应用程序上通过 Visual Studio 团队 Server 2005 运行自动化测试。该应用程序是一个 WCF 服务,其 BO 层具有多线程功能。VSTS 上的 userload 为 2,Think Time 为 20 秒(发送一个请求后的等待时间)。但是应用程序通过这样做会收到“ System.Threading.ThreadAbortException ”错误。发生错误的特定区域是 XslCompiledTransform transform.Transform(xmlReader, outputXmlWriter)。 通过这样做,我实际上是在尝试将 xml(在序列化 viewmodel 后生成 xml)提供给 xslt 对象(Transform)。“ System.Threading.ThreadAbortException" 错误不是在正常加载应用程序时发生,而是在多个用户同时访问上述方法时发生。详细错误在下面发布;

  • 日志名称:应用程序来源:Proposal.Service 日期:14/02/2014 1:44:20 AM 事件 ID:100 任务类别:无级别:错误关键字:经典用户:N/A 计算机:
    描述:时间戳:14/02 /2014 上午 6:44:20 消息:HandlingInstanceID:279fbd41-c40c-43aa-bc1a-07d3bc950cc8

    发生并捕获了“System.Threading.ThreadAbortException”类型的异常。

2014 年 2 月 14 日 01:44:20 类型:System.Threading.ThreadAbortException,mscorlib,版本=2.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089 消息:线程被中止。来源:System.Xml.Xsl.CompiledQuery.1 帮助链接:ExceptionState:数据:System.Collections.ListDictionaryInternal TargetSite:无效(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator)堆栈跟踪:在( XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug} 运行时,XPathNavigator {urn:schemas-microsoft-com:xslt-debug} 当前)在根(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}运行时) 在 System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results) 在 System.Xml.Xsl 的 Execute(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)。1.GetTransformedXml(String inputFileName, Object viewModelPart) at Proposal.Generator.Presenter.BaseClasses.BaseSectionPresenter1. TransformTemplateUsingXslt (String inputXsltName, Stream outpuStream, Object viewModelPart, Boolean addNumberPart, Boolean addstylePart, List 1 richTextPlaceholder, List1 richText, String wordDoc)

0 投票
0 回答
316 浏览

c# - 'System.Threading.ThreadAbortException' 发生在 mscorlib.dll 和线程'' (0x11a8) 以代码 0 (0x0) 退出

我有四个学生数据库,教师,非教师和管理员,在登录页面上我有一个用于输入的用户 ID 和密码文本框以及用户类型下拉列表......我在登录页面上添加他们的姓名会话显然,当我在我的输出控制台和母版页上 debug.write 它时,它显示了所有四个用户的名称,因此我猜会话也是在那里创建的......我的母版页代码如下:

但是当我在浏览器上运行它并在登录页面上点击提交时,正如我所说的会话已创建但页面永远不会进入母版页,它只是刷新并自行登录,我也试图清除 nullexceptions...怎么能我解决了这个异常??并问我是否需要更多信息.... :)

这是我的提交按钮代码:

0 投票
1 回答
150 浏览

c# - 使用 ASP.NET 标识模型的 ThreadAbort

除了 ASP.NET 之外,我一直在关注这个关于电子邮件确认的帖子。以下代码导致

该页面被标记为异步:

代码是:

有谁知道为什么?

0 投票
2 回答
795 浏览

c# - Is ReaderWriterLockSlim resistant to ThreadAbortException?

I would like to check whether following code is resistant against ThreadAbortException and will not lead into orphan lock. If it is not, what is the best pattern to avoid orphan locks here?

According following link http://chabster.blogspot.cz/2013/07/a-story-of-orphaned-readerwriterlockslim.html, there is (or at least there was) possible way how to create orphan locks but I was running sample code for a while without any luck.

I am using .NET 4.0

Is there any difference between behavior in Debug and Release?

0 投票
0 回答
77 浏览

asp.net - IIS7 异常性能受到影响

我们在框架 4.0 下的 IIS7 上运行了一个 asp.net 应用程序,应用了平台更新 1 以支持 MS Workflow。从一开始,性能并不出色,但已经被用户接受。现在我们终于可以专注于提高性能了,在查看 IIS 日志和观察 perf mon 之后,我想专注于几个关键领域。Mgmt 已要求提供有关首先解决哪个问题(如果有的话)的定量信息。我看到的两个最大的改进领域是: 1) 删除我们对 Response.Redirect 的所有调用,以消除与treadAbortException 相关的已知问题。我们的整个菜单/树导航架构都是使用它构建的,因此每天有数千个。2) 跟踪从 MS WF 引发的导致 401 身份验证错误的错误。通常它们报告为“401 2 5 15”或“401 2 5 0”。我们平均每天会出现 12-16000 个此类错误。
由于应用程序在出现这些错误时可以正常运行,因此 mgmt 认为可能有更好的区域可以使用资源。

关于为什么应该更正这些问题已有详细记录,但我无法找到任何明确的答案来回答“由于这些问题,用户会看到多少延迟?” 有没有办法测量每个异常所花费的时间,以及当负载发生时它如何滚雪球?任何可以提供的帮助建立一个可衡量的案例将不胜感激。

作为这些将与资源利用竞争的示例,大多数应用程序是服务器端处理,因此我们可以投入时间将代码转换为客户端/ajax。问题是我们转换的初始页面仍然遭受很长的首次加载时间。正如预期的那样,保存速度要快得多。而且我们一次只能完成一个页面,而删除 IIS 错误可以立即帮助处理所有页面。