造成这个问题的原因是
使用task创建了一个任务,任务调用的代码又会造成销毁这个任务,于是就造成了一个执行异常,这是一个矛盾的地方。
只要采用CancellationTokenSource即可
private CancellationTokenSource tokenSource = new CancellationTokenSource();
Task.Run(() =>
{
System.Windows.Application.Current.Dispatcher.Invoke(() =>
{
//上面执行相关代码
//任务取消
tokenSource.Cancel();
//程序关闭
Messenger.Default.Send(string.Empty, "Shutdown");
});
}, tokenSource.Token);
在这段代码里 任务最后需要调用一个订阅服务去关闭程序,关闭程序之前先将该任务取消。