问题标签 [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 回答
141 浏览

c# - 如何在没有 ThreadAbortException 的情况下返回自定义错误页面

在 Mono MVC5 控制器中,下面的代码用于返回自定义错误页面:

一段时间后,这会导致可以在 Application_Error 中捕获的 ThreadAbortException。看起来线程继续运行,直到达到超时。

如何解决此问题,以免发生异常?

SO中的答案需要修改web.config并且在不同的地方有很多代码。

我正在寻找一种简单的方法来返回自定义错误页面而无需在 MVC5 中修改 web.config。

如何在控制器中终止 thred 或有其他方法来避免异常。从 Applicaion_Error 记录异常,如果日志文件不包含此类异常,那就太糟糕了。

异常堆栈跟踪:

0 投票
2 回答
2309 浏览

c# - wcf 服务中的线程中止异常

我有一个托管在 IIS 6.0 上的 WCF 服务(内置于 .NET 框架 3.5)。

代码流程如下

  1. 客户端(这是另一个 Web 服务)调用 WCF 服务
  2. WCF 服务调用一个线程在后台进行处理并立即响应被调用者。
  3. 后台线程完成所有处理后,回调线程。这个调用基本上是一个 HTTPs 请求,因为客户端是一个 Web 服务。

我正在对我的 WCF 服务进行负载测试以定义阈值。观察结果如下:

在 1 分钟内向 WCF 服务发出的 1024 个请求的大约 3 次迭代成功通过。完成每次迭代所需的时间约为 25-30 分钟。然而,从第 4 次迭代中可以看到批量失败。大约 50% 的请求失败,以下例外。

异常线程被中止。

堆栈跟踪

我试图解决此问题的更改如下:

在 web.config 中

在 web.config 中

在 web.config 中

正如 StackOverflow 上的许多人所建议的那样,我已将 App 池的 IdleTimeout 属性设置为 0。

无论在哪里使用溪流,我都会在所有地方处理。所以所有的流都关闭了。

谁能告诉我谁在中止线程以及为什么以及是否有任何方法或工具来追踪线程中止启动的原因?

0 投票
0 回答
536 浏览

c# - System.Threading.ThreadAbortException(我们如何处理这个异常?)

public Form() { try { Thread t = new Thread(new ThreadStart(StartForm)); t.Start(); 线程.睡眠(3200);初始化组件();t.Abort(); } 捕捉(异常前) { MessageBox.Show(ex.Message); } } 线程th;

这是此异常的屏幕截图

0 投票
3 回答
12561 浏览

c# - “抛出异常:mscorlib.dll 中的‘System.Threading.ThreadAbortException’”在使用 Response.Redirect() 时

在 ASP.NET Web 表单中按钮的 OnClick 方法中,我调用了 Response.Redirect(),这会导致系统中止线程并显示错误消息:

这里有一些与此类似的问题,使用我更改的解决方案:

但是我仍然遇到同样的问题。使用调试器,我运行了代码并成功执行,直到我调用了 Response.Redirect();。

点击功能

关于为什么会发生这种情况的任何想法?

0 投票
1 回答
73 浏览

c# - 函数中出现意外的 ThreadAbortException

我们有一个应用程序,它在 Glabal.asax 的 5 分钟间隔(使用计时器)后调用一个函数

该函数与第三方通信,获取数据并将其发送到另一个更新数据库的应用程序。

在第 4 次或第 5 次调用该函数后,会在从 3rd 方应用程序接收数据时调用 ThreadAbortException。这会停止整个应用程序。

我们不使用导致 ThreadAbortException 的函数 Response.End、Response.Redirect 或 Server.Transfer。

应用程序池可能会重新启动/回收。但这可能是什么原因?我将超时更改为 0,这意味着它永远不会超时。但我仍然得到例外。

任何人都可以提出任何建议吗?

谢谢。

0 投票
1 回答
1552 浏览

threadabortexception - system.threading .threadAbortException 错误

我正在接管一个现有网站,并试图让该应用程序在我的机器上运行,但是我无法启动该应用程序,因为我收到以下错误。

这是我的代码

我怎样才能让它绕过 response.end?

0 投票
0 回答
337 浏览

c# - 如果 finally 块 *sometimes* 包含等待,为什么它不会在 ThreadAbortException 上执行?

更新:我不认为这个问题是Can ThreadAbortException finally skip 的重复?因为(1)我没有创建另一个线程,所以不可能出现竞争条件,并且(2)这种行为只有在finally块包含时才会发生await,其他问题没有提到。


考虑这个控制台程序:

当我在 Visual Studio 2015 中编译它时,输出是

但如果我做出这些改变中的任何一个......

  1. 取消注释 A 行(并删除 Main 中的调用Thread.ResetAbort()——另一个奇怪的地方)
  2. 将 B 行更改为throw new Exception();
  3. 删除 C 行

那么输出是

这种行为是一个错误,还是设计使然(并记录在某处)?

注意:在我的实际场景(一个 ASP.NET 应用程序)中,ThreadAbortException 由 HttpResponse.Redirect 引发,并且我在 finally 块中执行异步 I/O。

0 投票
1 回答
246 浏览

c# - 如果在异步等待后引发 ThreadAbortException,为什么不会自动重新抛出?

在调查, 和 ThreadAbortException的问题时finallyawait我遇到了另一个怪癖。根据文档

ThreadAbortException 是一个可以被捕获的特殊异常,但它会在catch块结束时自动再次引发。

但是考虑这个控制台程序:

当我在 Visual Studio 2015 中编译它时,输出是:

因此,之后引发的 ThreadAbortExceptionTask.Yield()不再被catch块自动重新抛出!为什么是这样?

0 投票
1 回答
82 浏览

c# - 偶尔的线程中止异常

我从以前的开发人员那里继承了一些代码,该应用程序在执行特定任务时偶尔会出现线程中止异常。

该线程打开一个带有动画加载 gif 的弹出窗口,从服务器下载文件,然后完成。完成后我将 fromflag 设置为 false。我无法设置计时器,因为下载文件可能需要任何时间。

我该如何以不同的方式编写它,这样我就不必使用 th.Abort 并且线程在完成时会自行关闭?

0 投票
1 回答
174 浏览

serilog - 在 xunit.console.exe 退出时干净地解决 Serilog Pump ThreadAbortException

xunit.console.exe当我关闭使用 Serilog 的应用程序时,出现以下异常:

是的,我做了一些大胆的事情(创建了一组 SerilogWriteTo.Async包装的记录器),但我需要找出最干净的方法来不引发异常并返回干净的测试运行。(如果有装配未初始化的钩子,我会调用Log.CloseAndFlush()它)

(是的,我很欣赏单元测试不应该连接重量级日志记录,但我仍然需要解决集成测试的问题)

(当我猜出来的时候会自己回答;我只是不能用谷歌搜索答案,相信应该可以)