问题标签 [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.
c# - 有没有办法从 System.Threading.Timer 处理 ThreadAbortException?
我有一个System.Threading.Timer
用于定期更新来自 SQL Server 的数据。有时,计时器的线程中止,我看到 ThreadAbortExceptions 被引发。
现在,我们在Global.asax.cs
Application_Error 方法/处理程序中处理这些异常。
但是,我想在更接近实际计时器的地方处理这个错误,所以我实际上可以做更多的事情,而不仅仅是记录它。
但我不清楚 - 我如何在 Timer 上观看这些事件?
编辑:我得到的实际异常:
clr - CLR 如何引发 ThreadAbortException?
如果您使用 Thread.Abort 从另一个托管线程中止一个托管线程,CLR 如何实际在另一个线程上引发异常?似乎是一个巧妙的技巧!
c# - resetAbort 有什么作用?
您好我有以下测试代码:
每次中止时,都会执行 Thread.ResetAbort() 。我想知道这个 ResetAbort 做了什么。因为当我运行它时,我看到了以下输出:我会回来的!我会回来!我会回来!而且我没有看到输出“End”——看来这个程序根本没有结束。你知道为什么吗?谢谢!
c# - ThreadAbortException 是否仍然强制执行 finally (try/catch) 部分中的代码?
我有一个System.Timers.Timer
计时器,它AutoReset
设置为false
. 我使用 atry/finally
来确保Start
它结束时的callback
计时器(我以这种方式使用计时器来防止callback
执行重叠)。代码:
我的问题是,如果执行线程是,会发生什么Aborted
?该finally
部分是否仍在执行或没有线程来运行该部分?
c# - 在 ThreadAbortException 的上下文中防止资源泄漏的推荐方法是什么?
我正在努力提高一段代码的异常安全性,并且我意识到引发ThreadAbortException
可能会导致不希望的资源泄漏,即使在使用 C#using
构造保护资源时也是如此。例如,考虑以下代码(可能在单独的线程中运行)。
如果运行此代码的线程异常终止,那么我希望filename
立即关闭引用的文件句柄。我可以在不使用using
try/finally 块替换构造的情况下执行此操作吗?
我的假设是ThreadAbortException
可能随时提出,这意味着我应该注意语句之间发生的事情。CreateWriter
虽然我可以使用 try/finally 块来防止异常,但在using
评估括号中的表达式之前,该构造不会执行相同的操作,这意味着如果异常在CreateWriter
返回后立即发生,则文件资源将保持打开状态。
我知道终结器最终会释放文件句柄,但我想知道是否有一种确定性的方法来解决这个问题,而不需要ThreadAbortException
在每个CreateWriter
使用的地方捕获。
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 响应。而且由于这在用户控件的上下文中可以证明是有效的,所以我不知道为什么直接调用它时它不起作用......
asp.net - w3wp 偶尔会挂起每晚回收
我在我们的 ASP.NET 应用程序中遇到了一个问题,有时夜间回收会导致 w3wp 挂起。
这就是发生的事情:
触发回收。显然,这会在所有正在运行的线程上强制 ThreadAbortException。但是,它似乎并没有触发新的 w3wp,或者实际上是新的 w3wp 引发了异常(还没有能够重现它)。
在我的日志中,我得到了很多 ThreadAbortException,并且线程数无限增加,这意味着任何新请求都会产生一个永远不会完成的新线程。如果这将是旧的 w3wp,那么任何新请求都将被路由到新启动的 w3wp。
关闭超时和快速故障保护似乎也没有触发,导致站点在手动回收之前不可用。大多数情况下,它也会消耗大量 CPU,使服务器也几乎无法使用。
我们正在使用可能与它没有任何关系的 Monorail MVC,但是我们确实使用了他们的 RescueController 系统。如果我们在错误处理中无意中捕获了 ThreadAbortException,是否会导致无限循环导致 w3wp 严重挂起以致 IIS 无法从中恢复?
c# - C# 中使用带委托的线程的线程中止异常
我正在使用线程调用包含 while 循环的函数来读取权重。在 while 循环中,我正在调用一个委托函数来更新文本框中的值。
单击名为 的按钮Stop
时,我试图中止线程,但我得到一个线程中止异常:
对于上面的代码,我遇到了线程中止异常,任何人都可以帮我解决这个问题。
c# - 为什么 CLR 重新抛出 ThreadAbortException?
我从“Windows 上的并发编程”一书中得到以下代码:
我很想知道为什么 CLR 会重新抛出 ThreadAbortException ?它一直这样做,直到我调用“Thread.ResetAbort()”。其次,是否有任何其他系统定义的异常,从 CLR 得到特殊处理?
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 ()
我能做些什么来防止这种情况发生?