我怎么修复的"系统。穿线。任务。TaskCanceledException:'的任务被取消了。'" 异常程序出口(它)?

0

的问题

我有一个它MP3播放器桌面应用程序(.净框架4.7.2)使用ElementHost主办一MediaElement控制和具有DispatcherTimer控制播放(例如更新滑).

一切正常,但是,当我退出应用程序,我得到的 "System.Threading.Tasks.TaskCanceledException: 'A task was canceled.'" 例外(I注意到它只有当下运行调试器).

这是什么,但造成滋扰和感觉主要是无害的,但我不喜欢的例外,我不明白。 该调用栈不是超级有用的:

>   mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task task)   Unknown
    mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task)  Unknown
    WindowsBase.dll!System.Windows.Threading.DispatcherOperation.Wait(System.TimeSpan timeout)  Unknown
    WindowsBase.dll!System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherOperation operation, System.Threading.CancellationToken cancellationToken, System.TimeSpan timeout)   Unknown
    WindowsBase.dll!System.Windows.Threading.Dispatcher.Invoke(System.Action callback, System.Windows.Threading.DispatcherPriority priority, System.Threading.CancellationToken cancellationToken, System.TimeSpan timeout) Unknown
    WindowsBase.dll!MS.Internal.WeakEventTable.OnShutDown() Unknown
    WindowsBase.dll!MS.Internal.WeakEventTable.WeakEventTableShutDownListener.OnShutDown(object target, object sender, System.EventArgs e)  Unknown
    WindowsBase.dll!MS.Internal.ShutDownListener.HandleShutDown(object sender, System.EventArgs e)  Unknown

这种情况,因为WPF叠不会设置的正确吗? 我保证我DispatchTimer停止在MainForm_FormClosing但也许还有别的东西我需要清理?

不是一个至关重要的问题,当然,通过令人讨厌。

c# winforms wpf
2021-11-22 00:41:19
2

最好的答案

1

这个异常的时候一步方法是不允许的运行,以完成,以便其他步的方法相同 CancellationToken 可以停止处理的优雅,如果需要的。

你可能可以忽略它,因为它似乎是一个未捕获的例外从这些图书馆使用。 如果它真的打扰你和你知道它并不在你的代码,你会泡的例外,但这通常不被认为是良好做法。

2021-11-22 00:48:57

是有一个很好的方式来找到它的方法是造成这个例外会引发? 我会感觉更好如果我知道哪个图书馆造成的。 该调用栈在例外投掷的时间不是很有用,并给予它的应用程序关闭,很少有运行的线左。
David Airapetyan

你可以把你的代码有一个抓住条款,把一个断点上看,如果你可以找到该罪犯的呼堆。 不幸的是,如果其中一个图书馆已经抓住了一个异常,并重新引发新的CancellationException,你不会得到充分的历史,和你最好的赌注然后是看如果你可以潜入来源的图书馆如果它是可用的。
Chris
0

它看起来像一个问题。净框架4.7.2. 问题和解决方法是描述: TaskCanceledException在ShutDownListener.

Tl'dr是,添加下面的我的程序。config作出外走走:

  <runtime>
    <AppContextSwitchOverrides value="Switch.MS.Internal.DoNotInvokeInWeakEventTableShutdownListener=true"/>
  </runtime>
2021-11-22 03:44:26

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................