Cri*_*ris 1 asynchronous windows-runtime
我有一个需要使用Sqlite DB的Win8应用程序; 每次应用程序启动时我都会检查该文件是否存在,如果不存在,我会尝试复制它.问题是,当我复制它时,应用程序尝试在复制结束前打开它,我收到一个错误:
我调用以下函数,然后尝试查询数据库:
public async static void CopyDatabase()
{
bool isExisting = false;
try
{
StorageFile storage = await ApplicationData.Current.LocalFolder.GetFileAsync("dbname.db");
isExisting = true;
}
catch (Exception ex)
{
isExisting = false;
}
if (!isExisting)
{
StorageFile databaseFile = await Package.Current.InstalledLocation.GetFileAsync("dbname.db");
await databaseFile.CopyAsync(ApplicationData.Current.LocalFolder);
}
}
Run Code Online (Sandbox Code Playgroud)
我如何知道副本何时结束?我究竟做错了什么?
我认为问题不在于这个方法的代码,而在于你如何调用它.
将方法的声明更改为:
public async static Task CopyDatabase()
Run Code Online (Sandbox Code Playgroud)
并使用以下方式调用:
await CopyDatabase();
Run Code Online (Sandbox Code Playgroud)
这将保证在执行下一行代码(可能尝试打开数据库)之前完成复制.
| 归档时间: |
|
| 查看次数: |
1731 次 |
| 最近记录: |