我在viewmodel中有这个属性。
public bool IsKWH
{
get { return _isKwh; }
set
{
if (value.Equals(_isKwh)) return;
_isKwh = value;
NotifyOfPropertyChange(() => IsKWH);
}
}
当我关闭我的应用程序时,有时候(大约10次)我在NotifyOfPropertyChange中收到以下错误:
类型' System.Threading.Tasks.TaskCanceledException'的异常发生在WindowsBase.dll中但未在用户代码中处理
其他信息:任务已取消。
我的视图模型中有一个System.Threading.Timer正在进行webservice调用以更新此属性和许多其他属性。
我正在使用Caliburn.Micro,当我从1.5更新到2.0时,它似乎已经开始发生。
无论如何都要防止发生此错误?
答案 0 :(得分:10)
在应用程序关闭之前,您的应用程序可能会间歇性地处理它正在使用的任何辅助线程。这通常会导致错误消息,例如您发布的消息。我可以建议您尝试以下方法:
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
// close all active threads
Environment.Exit(0);
}
这应该强制应用程序在关闭之前终止所有活动线程。我记得有一个类似的问题,特别的小修复解决了它。可能值得尝试一下,如果它没有帮助我知道,我们可以看到其他可能的解决方案。希望这对你有用。
答案 1 :(得分:3)
FWIW,该修复程序对我没有帮助。该问题来自动态加载的第3方DLL。我无法阻止引发异常,但是我在应用程序异常处理程序中忽略了该异常:
String