我正在开发一个MVVM WPF应用程序,我有一些任务要做。
- 首先加载文件 csv 并解析它
- 在后台不要阻止 UI 线程并将值保存在数据库中。要将行保存到数据库中,我需要使用异步等待任务。
我的问题是我不知道如何通过弹出通知或其他值已保存在数据库中的内容来通知用户。
在我的视图中模型
private void SaveDatasInDatabase()
{
ShowLoadingPanel = true;
_service.SaveValuesInDatabase(rows);
}
private async void startActions()
{
await LoadandParseCsv();
await SaveDatasInDatabase();
}
为我服务.cs
public string SaveDatasInDatabase(List<Object> rows)
{
Task.Run(async () =>
{
await SaveEntity(rows);
return "Done";
});
}
提前谢谢。
乔林斯
一旦执行了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
方法的返回类型应Task
或Task<T>
,以便能够等待它。同样的事情也适用于SaveEntity
方法。