C# 检查异步任务是否从其他线程完成
我正在使用异步任务上载文件和更新数据库。我需要知道应用程序何时关闭以更新数据库中的上载状态 我的任务在ViewModel类中C# 检查异步任务是否从其他线程完成,c#,wpf,asynchronous,mvvm,task,C#,Wpf,Asynchronous,Mvvm,Task,我正在使用异步任务上载文件和更新数据库。我需要知道应用程序何时关闭以更新数据库中的上载状态 我的任务在ViewModel类中 private async void OnUpload(object param) { await Task.Factory.StartNew(() => { try { ... } catch (Exception ex) {
private async void OnUpload(object param)
{
await Task.Factory.StartNew(() =>
{
try
{
...
}
catch (Exception ex)
{
...
}
}
}
在失败事件中,我应该在主窗口中放置什么
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
....
base.OnClosing(e);
}
在类中获取bool变量
IsTaskCompleted
,并将默认值保持为false
。作为任务的try
块中的最后一句话,将IsTaskCompleted
设置为true
在关闭事件处理程序中检查此变量,如果值为
false
,则表示任务未完成。就我个人而言,我会使用反应式扩展(RX)和主题从关闭时发布事件
在程序中我需要它的任何地方,我都会订阅事件并执行任何清理
这将使OnClosing
事件与执行清理的所有订阅服务器分离,并允许您将数据库的清理代码和数据库的繁重代码彼此靠近