';System.Threading.Tasks.TaskCanceledException';关闭应用程序
本文关键字:应用程序 Threading System Tasks TaskCanceledException | 更新日期: 2023-09-27 18:28:05
我的视图模型中有这个属性。
public bool IsKWH
{
get { return _isKwh; }
set
{
if (value.Equals(_isKwh)) return;
_isKwh = value;
NotifyOfPropertyChange(() => IsKWH);
}
}
有时(大约十分之一)当我关闭应用程序时,我会在NotifyOfPropertyChange中出现以下错误:
WindowsBase.dll中发生类型为"System.Threading.Tasks.TaskCanceledException"的异常,但未在用户代码中处理
附加信息:任务已取消。
我的视图模型中有一个System.Threading.Timer,它正在进行Web服务调用以更新此属性和许多其他属性。
我正在使用Caliburn.Micro,当我从1.5更新到2.0时,它似乎已经开始发生了。
是否有任何方法可以防止此错误发生?
在应用程序关闭之前,应用程序可能会间歇性地无法处理它正在使用的任何辅助线程。这通常会导致错误消息,例如您发布的错误消息。我可以建议试试以下几种吗:
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
// close all active threads
Environment.Exit(0);
}
这将强制应用程序在关闭之前终止所有活动线程。我记得有一个类似的问题,那个特殊的小修复解决了它。也许值得一试,如果它没有帮助,请告诉我,我们可以看看还有什么其他解决方案。希望这对你有效。
FWIW,该修复程序对我没有帮助。问题来自动态加载的第三方DLL。我无法阻止抛出异常,但我忽略了应用程序异常处理程序中的异常:
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(
(sender2, args) =>
{
Exception ex = (Exception)args.ExceptionObject;
// unloading dragon medical one
if (ex is TaskCanceledException)
return; // ignore