【发布时间】:2021-09-13 13:52:05
【问题描述】:
假设我有如下部分代码:
Task.Run(() =>
{
var backgroundWorker = new BackgroundWorker();
backgroundWorker.RunWorkerCompleted += (sender, args) => throw new Exception("Catch me if you can...");
backgroundWorker.RunWorkerAsync();
});
哪个事件处理程序可以捕获这个未处理的异常? 我尝试了 1- DispatcherUnhandledException,2- TaskScheduler.UnobservedTaskException,但无法处理。
【问题讨论】:
-
一个Backgroundworker in一个Task.Run?? 坏 想法开始。观察到的行为是原因之一。
-
@Fildor OP 确实说过,
"Assume",但有些事情让我相信这不是假设。 -
but I have a package that does this in the code,那么这不是一个假设。如果您无法控制它,请停止使用它;谁知道还有什么其他类型的垃圾。否则,请重新考虑您正在使用此代码做什么。 -
^^ 所以,如果这是在第 3 方包中,那么您无能为力。我看到的唯一选择是:无论该包做什么 - a)自己编码 b)找到更好的包。
-
什么意思可以“展示”但不能“捕捉”? - 但无论如何 - 这只是我的意见 - 如果我在我正在使用的库中发现这样的代码,我会停止使用它。并在顶部提交错误报告。
标签: c# task backgroundworker