gpt4 book ai didi

c# - ShutDownListener 中的 TaskCanceledException

转载 作者:可可西里 更新时间:2023-11-01 08:28:29 24 4
gpt4 key购买 nike

我们目前看到很多 TaskCanceledExceptionMS.Internal.ShutDownListener.HandleShutDown 抛出。这开始于 5 月中旬,可能与 .Net 或 Windows 10 的某些更新有关。我们在我们软件的旧版本(约 2 岁)和新版本中都看到了这一点,并且它刚刚在所有版本中开始。我们针对旧版本的 .Net 4 客户端配置文件和较新版本的 .Net 4.5.1。

完整的堆栈跟踪是:

TaskCanceledException at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout) at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout) at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout) at MS.Internal.WeakEventTable.OnShutDown() at MS.Internal.ShutDownListener.HandleShutDown(Object sender, EventArgs e)

问题是:是什么原因造成的?

目前,我们正在寻找找到根本原因并最终解决此问题的方法。当然,我们可以简单地在最后捕获它,但这不是一个实际的解决方案。欢迎任何方向的提示。我们想更新这个问题,因为我们获得了更多的洞察力,以便能够为以后遇到这个问题的人提供信息。

最佳答案

我也看到了。如果您查看源代码 ~278,关机期间有任意 300 毫秒的时间限制: https://referencesource.microsoft.com/#WindowsBase/Base/MS/Internal/WeakEventTable.cs

try
{
Dispatcher.Invoke((Action)OnShutDown, DispatcherPriority.Send, CancellationToken.None, TimeSpan.FromMilliseconds(300));
succeeded = true;
}
catch (TimeoutException)
{
}

即使 WeakEventTable 中的内部集合都已清空,它也会引发。

enter image description here

无论是谁写的,都没有预料到运行时会抛出 TaskCanceledException,因为它可能从来没有这样过。我采取的解决方法是删除对 WeakEventManager 的所有使用。

关于c# - ShutDownListener 中的 TaskCanceledException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50906813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com