异步数据库填充

时间:2014-07-18 11:15:09

标签: c# silverlight events windows-phone-8 asynchronous

在我的应用程序中,我使用SOAP服务下载CSV文件,这些文件用于填充Sqlite数据库中的不同表。我正在使用SQLite.Net库进行数据库操作。

为了填充数据库,我为每个表编写了方法(因为不同的模式)。这些方法同步运行。在这些方法中,我使用的是同步SQL连接的实例。

当我将方法从void更改为async Task并使用await进行调用时,我不知道这些方法是否已完成,以及何时完成。

我的问题是我应该采取什么方法才能将这些操作更改为异步,以及如何在每个方法完成时定义事件。我从来没有写过事件,所以如果有人能给出一些样本怎么做,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

从异步方法返回的Task为您提供所需的内容。当异步方法完成时,Task类型将通知调用代码。

利用此功能的最简单方法是让调用代码使用await。例如,如果您希望(异步)等待填充每个表:

await PopulateTable1Async();
await PopulateTable2Async();
await PopulateTable3Async();

或者,您可能希望同时填充所有表格,在这种情况下,您可以使用Task.WhenAll

await Task.WhenAll(PopulateTable1Async(), PopulateTable2Async(), PopulateTable3Async());