WPF,如何知道任务已经完成

WPF , howto to know that a task has completed

我正在开发一个 MVVM WPF 应用程序,我有一些任务要做。

  1. 首先加载文件 csv 并解析它
  2. 在后台不阻塞 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 类型应该是 TaskTask<T> 以便您能够等待它。同样的事情也适用于 SaveEntity 方法。