问题标签 [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 投票
0 回答
1284 浏览

c# - 有没有办法从 System.Threading.Timer 处理 ThreadAbortException?

我有一个System.Threading.Timer用于定期更新来自 SQL Server 的数据。有时,计时器的线程中止,我看到 ThreadAbortExceptions 被引发。

现在,我们在Global.asax.csApplication_Error 方法/处理程序中处理这些异常。

但是,我想在更接近实际计时器的地方处理这个错误,所以我实际上可以做更多的事情,而不仅仅是记录它。

但我不清楚 - 我如何在 Timer 上观看这些事件?

编辑:我得到的实际异常:

0 投票
2 回答
366 浏览

clr - CLR 如何引发 ThreadAbortException?

如果您使用 Thread.Abort 从另一个托管线程中止一个托管线程,CLR 如何实际在另一个线程上引发异常?似乎是一个巧妙的技巧!

0 投票
3 回答
3074 浏览

c# - resetAbort 有什么作用?

您好我有以下测试代码:

每次中止时,都会执行 Thread.ResetAbort() 。我想知道这个 ResetAbort 做了什么。因为当我运行它时,我看到了以下输出:我会回来的!我会回来!我会回来!而且我没有看到输出“End”——看来这个程序根本没有结束。你知道为什么吗?谢谢!

0 投票
5 回答
1354 浏览

c# - ThreadAbortException 是否仍然强制执行 finally (try/catch) 部分中的代码?

我有一个System.Timers.Timer计时器,它AutoReset设置为false. 我使用 atry/finally来确保Start它结束时的callback计时器(我以这种方式使用计时器来防止callback执行重叠)。代码:

我的问题是,如果执行线程是,会发生什么Aborted?该finally部分是否仍在执行或没有线程来运行该部分?

0 投票
4 回答
330 浏览

c# - 在 ThreadAbortException 的上下文中防止资源泄漏的推荐方法是什么?

我正在努力提高一段代码的异常安全性,并且我意识到引发ThreadAbortException可能会导致不希望的资源泄漏,即使在使用 C#using构造保护资源时也是如此。例如,考虑以下代码(可能在单独的线程中运行)。

如果运行此代码的线程异常终止,那么我希望filename立即关闭引用的文件句柄。我可以在不使用usingtry/finally 块替换构造的情况下执行此操作吗?

我的假设是ThreadAbortException可能随时提出,这意味着我应该注意语句之间发生的事情。CreateWriter虽然我可以使用 try/finally 块来防止异常,但在using评估括号中的表达式之前,该构造不会执行相同的操作,这意味着如果异常在CreateWriter返回后立即发生,则文件资源将保持打开状态。

我知道终结器最终会释放文件句柄,但我想知道是否有一种确定性的方法来解决这个问题,而不需要ThreadAbortException在每个CreateWriter使用的地方捕获。

0 投票
4 回答
2910 浏览

c# - 导出到 Excel - ThreadAbortException

我在转换为我找到的 Excel 代码时遇到问题。我正在.NET 4.0 中开发一个网站项目,我为此创建了一个类,它执行以下操作(基于 http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html):

我从包含添加到页面上显示的 GridView 的按钮的用户控件中调用此类。这按预期工作 - 单击按钮,您将看到一个下载选项,可以打开或保存包含来自 GridView 的数据的生成的 excel 电子表格。

但是,当我从不同的 GridView 中的链接按钮调用它时,我想构建一个动态的 gridview 来包含数据并将其导出。当我这样做时,我从类中的 Response.End 调用中得到一个 ThreadAbortException。

问题 1:为什么从用户控件中调用相同的代码时,我没有收到 ThreadAbortException?用户控件是否有自己的线程或其他类型的上下文?

在发生 ThreadAbortException 时搜索我得到的错误导致我尝试用 ApplicationInstance.CompleteRequest() 替换它。当我这样做时,我不再得到 ThreadAbortException,但这会破坏以前工作的用户控件 - 而不是生成的包含来自网格的数据的 excel 电子表格,它包含来自包含页面的 HTML,并且无论如何它很容易抑制该错误带有空捕获。但是,它不能修复使用动态生成的 GridView 的直接调用,该代码会呈现 javascript 错误:“无法解析从服务器接收到的消息。”

我很想了解这里到底发生了什么,但无论理解如何,我都需要结果。我尝试过的所有其他方法(datagrid 而不是 GridView 等)都遇到了同样的问题,并且在归结为“接管”当前响应并使用 stringwriter 和 htmlwriter 将数据呈现到使用 excel contentType 响应。而且由于这在用户控件的上下文中可以证明是有效的,所以我不知道为什么直接调用它时它不起作用......

0 投票
2 回答
924 浏览

asp.net - w3wp 偶尔会挂起每晚回收

我在我们的 ASP.NET 应用程序中遇到了一个问题,有时夜间回收会导致 w3wp 挂起。

这就是发生的事情:

触发回收。显然,这会在所有正在运行的线程上强制 ThreadAbortException。但是,它似乎并没有触发新的 w3wp,或者实际上是新的 w3wp 引发了异常(还没有能够重现它)。

在我的日志中,我得到了很多 ThreadAbortException,并且线程数无限增加,这意味着任何新请求都会产生一个永远不会完成的新线程。如果这将是旧的 w3wp,那么任何新请求都将被路由到新启动的 w3wp。

关闭超时和快速故障保护似乎也没有触发,导致站点在手动回收之前不可用。大多数情况下,它也会消耗大量 CPU,使服务器也几乎无法使用。

我们正在使用可能与它没有任何关系的 Monorail MVC,但是我们确实使用了他们的 RescueController 系统。如果我们在错误处理中无意中捕获了 ThreadAbortException,是否会导致无限循环导致 w3wp 严重挂起以致 IIS 无法从中恢复?

0 投票
4 回答
3389 浏览

c# - C# 中使用带委托的线程的线程中止异常

我正在使用线程调用包含 while 循环的函数来读取权重。在 while 循环中,我正在调用一个委托函数来更新文本框中的值。

单击名为 的按钮Stop时,我试图中止线程,但我得到一个线程中止异常:

对于上面的代码,我遇到了线程中止异常,任何人都可以帮我解决这个问题。

0 投票
2 回答
1611 浏览

c# - 为什么 CLR 重新抛出 ThreadAbortException?

我从“Windows 上的并发编程”一书中得到以下代码:

我很想知道为什么 CLR 会重新抛出 ThreadAbortException ?它一直这样做,直到我调用“Thread.ResetAbort()”。其次,是否有任何其他系统定义的异常,从 CLR 得到特殊处理?

0 投票
1 回答
525 浏览

dotnetopenauth - DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider() ThreadAbortException

使用DotNetOpenAuth-3.4.7.11121我收到 System.Threading。调用 DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationRequest RedirectToProvider () 方法时出现ThreadAbortException 。我的调用堆栈看起来像

" 在 System.Threading.Thread.AbortInternal()\r\n 在 System.Threading.Thread.Abort(Object stateInfo)\r\n 在 System.Web.HttpResponse.End () \r\n 在 DotNetOpenAuth.Messaging。 OutgoingWebResponse.Send(HttpContext context) 在 c:\BuildAgent\work\a02b428f36957bca\src\DotNetOpenAuth\Messaging\OutgoingWebResponse.cs:line 161\r\n 在 DotNetOpenAuth.Messaging.OutgoingWebResponse.Send() 在 c:\BuildAgent\work \a02b428f36957bca\src\ DotNetOpenAuth \Messaging\OutgoingWebResponse.cs:131 行\r\n 在 DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.RedirectToProvider ()

我能做些什么来防止这种情况发生?