1

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

  1. 首先加载文件 csv 并解析它
  2. 在后台不要阻塞 ui 线程并将值保存在数据库中。要将行保存到数据库中,我需要使用异步等待任务。

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

在我的视图模型中

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";
    });
}

提前致谢。

乔林斯

4

1 回答 1

1

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

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

    MessageBox.Show("done");
}

...前提是实际等待SaveEntity方法中的SaveDatasInDatabase()方法:

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

如果你只是打电话Task.Run而不等待返回Task,你不知道它什么时候结束。

方法的返回类型SaveDatasInDatabase应该是Task或者Task<T>让你能够等待它。同样的事情也适用于该SaveEntity方法。

于 2017-02-06T16:00:23.340 回答