2017-02-06 149 views
0

我正在开发一个MVVM WPF应用程序,我有一些任务要做。WPF,如何知道任务已完成

  1. 第一加载文件CSV和解析它
  2. 在背景鸵鸟政策块UI线程,并保存在database.To的值的行保存到我需要与异步等待任务的数据库。

我的问题是我不知道如何注意用户弹出通知或其他值已保存在数据库中的其他东西。

在我的视图模型

private void SaveDatasInDatabase() 
{ 
      ShowLoadingPanel = true; 
      _service.SaveValuesInDatabase(rows); 
} 


private async void startActions() 
{ 
    await LoadandParseCsv(); 
    await SaveDatasInDatabase(); 
} 

我提前Service.cs

public string SaveDatasInDatabase(List<Object> rows) 
{ 
    Task.Run(async() => 
    { 
      await SaveEntity(rows); 
      return "Done"; 
    }); 
} 

感谢。

Jolynce

回答

1

你知道,一旦执行了startActions()方法的其余部分任务已完成:

private async void startActions() 
{ 
    await LoadandParseCsv(); 
    await SaveDatasInDatabase(); 

    MessageBox.Show("done"); 
} 

...提供实际等待的SaveDatasInDatabase()方法SaveEntity方法:

public async Task<string> SaveDatasInDatabase(List<Object> rows) 
{ 
    await SaveEntity(rows); 
    return "Done"; 
} 

如果您只是致电Task.Run而不等待退回Task,你不知道什么时候结束。

SaveDatasInDatabase方法的返回类型应为TaskTask<T>,以便您能够等待它。同样的事情适用于SaveEntity方法。

+0

谢谢mm8。我会尝试你的解决方案。 – jolynice

+0

:)非常感谢mm8,工作正常.. – jolynice

相关问题