关闭应用程序时,WindowsBase.dll中出现"System.Threading.Tasks.TaskCanceledException"

Dea*_*ean 8 c# wpf multithreading caliburn.micro

我在viewmodel中有这个属性.

public bool IsKWH
{
    get { return _isKwh; }
    set
    {
        if (value.Equals(_isKwh)) return;
        _isKwh = value;
        NotifyOfPropertyChange(() => IsKWH);
    }
}
Run Code Online (Sandbox Code Playgroud)

关闭我的应用程序时,有时候(10次中有~10次)我在NotifyOfPropertyChange中收到以下错误:

WindowsBase.dll中出现"System.Threading.Tasks.TaskCanceledException"类型的异常,但未在用户代码中处理

附加信息:任务已取消.

我在我的视图模型中有一个System.Threading.Timer,它正在进行webservice调用以更新这个和许多其他属性.

我正在使用Caliburn.Micro,当我从1.5更新到2.0时,它似乎已经开始发生.

反正有没有阻止这种错误发生?

Dig*_*1nt 13

在应用程序关闭之前,您的应用程序可能会间歇性地处理它正在使用的任何辅助线程.这通常会导致错误消息,例如您发布的消息.我可以建议您尝试以下方法:

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
       // close all active threads
       Environment.Exit(0);       
}
Run Code Online (Sandbox Code Playgroud)

这应该强制应用程序在关闭之前终止所有活动线程.我记得有一个类似的问题,特别的小修复解决了它.可能值得一试,如果它没有帮助我知道,我们可以看到可能有哪些其他解决方案.希望这对你有用.