WPF,如何知道任务已经完成
WPF , howto to know that a task has completed
我正在开发一个 MVVM WPF 应用程序,我有一些任务要做。
- 首先加载文件 csv 并解析它
- 在后台不阻塞 ui 线程并将值保存在 database.To 中,将行保存到我需要使用异步等待任务的数据库中。
我的问题是我不知道如何通过弹出通知或其他值已经保存在数据库中的东西来通知用户。
在我的 ViewModel 中
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";
});
}
提前致谢。
乔林斯
一旦执行完 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
而没有等待 returned Task
,您不知道它何时完成。
SaveDatasInDatabase
方法的 return 类型应该是 Task
或 Task<T>
以便您能够等待它。同样的事情也适用于 SaveEntity
方法。
我正在开发一个 MVVM WPF 应用程序,我有一些任务要做。
- 首先加载文件 csv 并解析它
- 在后台不阻塞 ui 线程并将值保存在 database.To 中,将行保存到我需要使用异步等待任务的数据库中。
我的问题是我不知道如何通过弹出通知或其他值已经保存在数据库中的东西来通知用户。
在我的 ViewModel 中
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";
});
}
提前致谢。
乔林斯
一旦执行完 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
而没有等待 returned Task
,您不知道它何时完成。
SaveDatasInDatabase
方法的 return 类型应该是 Task
或 Task<T>
以便您能够等待它。同样的事情也适用于 SaveEntity
方法。