问题标签 [aggregateexception]
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# - 在 C# 中使用 Parallel.For 循环时如何修复 System.AggregateException
我在 C# 中有一个如下所示的循环:
我想使用 Parallel.For 循环并行化这段代码,这看起来很简单,至少根据Reed 对我之前提出的问题的回答。所以我继续这样做:
此代码引发 System.AggregateException。内部异常是:
我知道数组的大小合适,因为代码在不并行时工作得很好。这是什么意思?我该如何调试这个问题?或者在并行化这种性质的代码时我应该完全做其他事情吗?
内部异常堆栈跟踪是:
走到那条线之后,我把它弄乱了,看看这是否是问题所在。该行是:
并认为这可能行不通,然后我尝试了更明确的方法:
那么这可能是问题,某种内部数组复制吗?如果这是问题所在,应如何处理此数组声明以避免异常?
c# - AggregateException 中的 TaskCanceledException 不包含堆栈跟踪
我正在使用任务并行库来运行一个任务,该任务在取消时会引发 OperationCanceledException,然后使用 AggregateException 将其捕获,如下所示。AggregateException 包含一个 TaskCanceledExceptions 列表,它们对应于抛出的异常。不幸的是,这些 TaskCanceledExceptions 似乎正在丢失原始异常引发的堆栈跟踪。这是设计使然吗?
结果:
c# - 如何修复“在 mscorlib.dll 中发生‘System.AggregateException’”
我在调试时收到未处理的异常,程序停止执行。调试器没有向我显示这条线,所以我不知道要修复什么。
System.AggregateException
发生了“ ”类型的未处理异常mscorlib.dll
附加信息:通过等待任务或访问其异常属性未观察到任务的异常。结果,未观察到的异常被终结器线程重新抛出。
无法获取本地或参数“
<this>
”的值,因为它在此指令指针处不可用,可能是因为它已被优化掉。System.Threading.Tasks.TaskExceptionHolder
如何解决此问题?
我还发现这个问题非常相似。
c# - HttpClient - 处理聚合异常
嗨,我正在使用类似于此的 HttpClient:
但是我在处理异常时遇到了困难。我添加了额外的 catch 块只是为了尝试跨步投掷,但没有一个断点被任何 catch 块捕获。我意识到使用 Task 异常可能发生在与调用者不同的线程上,因此异常被包装在一个聚合容器中,但我不确定处理这些异常的最佳方法是什么。
例如,我向 Web 服务发出请求,并在请求中指定了无效参数,然后引发异常。我希望我能够捕获聚合异常并查看内部异常以找出请求失败的原因并返回友好消息。
所以我的问题是,捕捉这些聚合异常并处理它们的最佳方法是什么?
c# - 在另一个操作系统上引发的任务继续上的未处理 AggregateException
在进行测试以查看它在不同操作系统上的响应方式时,我在 winForms 应用程序中遇到了一个奇怪的行为。
抛出未处理的长时间运行的操作AggregateException
(在 XP 32 位机器上测试时)是 WCF(使用basicHttpBinding
和Streamed
传输模式)客户端更新过程的一部分。该结构类似于以下代码片段。为了清楚起见,我省略了 WCF 异常处理:
你会注意到我将proxy.DownloadFile()
方法包装在一个 try-catch 块中,我在其中捕获了一个IO.IOException
. 正如我在文章开头所说的那样,我的 WCF 服务使用Streamed
传输模式,basicHttpBinding
因此当操作开始后由于某种原因与服务器的连接丢失时,我需要捕获这种类型的异常。我在 catch 语句中所做的只是取消数据库更新任务,将 UI 控件重置为其主要值,并Interval
在几秒钟内启动 System.Windows.Forms.Timer,Update()
如果客户端有互联网,它将再次执行该方法连接性。
虽然整个过程在我的开发环境(Windows7 32 位机器)上按预期工作IOException
,但当我在 Windows XP 32 位机器上测试我的 winforms 应用程序时,未处理AggregateException
的 at 会System.Threading.Tasks.ExceptionHolder.Finalize()
终止应用程序。
有没有人经历过类似的事情?怎么可能只在 XP 机器上抛出异常?我还没有在其他环境中测试过它。实际代码包含更多任务和延续,调用下游业务组件,当涉及到带有延续意大利面的任务异常处理时,我有点迷失了。你能给我一些我应该如何构建异常处理的例子吗?
c# - Task.WaitAll 在其中一项任务仍在运行时不抛出 AggregateException
我在捕获 AggregateException 时遇到了一些问题。这是我的不同场景。
所有任务都按时完成。→ 工作正常。
Task2 抛出错误,所有其他任务都及时完成。→ 捕获 AggregateException 并可以看到 Task2 抛出的 ArgumentException。
Task1 没有及时完成并且仍在运行。Task2 抛出错误。任务 3 完成。→ AggregateException 没有触发。我在 Exception 属性中看到 Task2 状态为故障和异常信息。
我不知道为什么它没有在场景 #3 中抛出 AggregateException。有什么帮助吗?
c# - 对 AggregateException Handle 方法的困惑
ReSharper 给了我一个 CoVariantConversion 警告,所以我决定用谷歌搜索,看看如何解决它。我遇到了这段代码:
这部分让我感到困惑:
它有什么作用?我会认为它什么都不做。
c# - 发布模式下的 AggregateException
我有三个任务,我在启动三个任务后调用了 Task.WaitAll(task1,task2,task3)。
该程序在调试模式下运行良好。当它切换到释放模式时,会抛出 AggregateException。
我想知道如何找到异常的原因。
谢谢
c# - 处理 AggregateExceptions 的展平
我遇到了一些问题,我调用flatten
了一个AggregateException
,但里面还有另一个AggregateException
!这显然意味着它们正在向上传播并被卷入另一个AggregateException
. 有没有办法递归地展平所有内部 AggregateExceptions?通常,我将使用句柄委托来处理这些,但如果有另一个内部 AggregateExceeption,它会返回 false。我没有正确处理这些吗?
编辑:由于我已经在调用 Flatten,因此问题似乎是直到调用堆栈的后期才被捕获。这是我调用 Flatten() 的代码。为了在堆栈跟踪中使用,此方法称为 WriteExceptionRecord(string, FileInfo):
但是,堆栈跟踪显示它没有在这里被捕获。相反,它稍后会在调用堆栈中被捕获。以下是出于安全原因删除了一些识别信息的跟踪:
顺便说一句:这是由 TPL-Dataflow 块调用的。
c# - WindowsPhone PhoneCamera - 页面恢复异常
我有一个奇怪的例外。我在一个页面中使用了PhoneCamera API,用户可以制作一些照片,拍摄后直接上传。
我的代码:
当初始化事件被触发时,一切正常。但是当用户在相机初始化时点击手机的主页按钮时出现异常。(初始化事件未触发)。
当用户使用返回按钮返回时,发生以下异常:
我尝试了许多其他选择,但没有任何效果。我现在不知道为什么会发生此错误。虽然我知道它发生在哪里,在什么情况下。
欢迎任何帮助。谢谢你。