我有一个应用程序,可将数据库从本地包复制到本地文件夹。在将应用程序包创建到商店并使用Windows App Cert Kit进行测试后,将显示一条错误消息,如下所示:
在我尝试使用Powershell进行安装后,当首次打开该应用程序时,该应用程序运行平稳。但是在关闭应用程序后,再次运行,然后仅出现初始屏幕。 代码:
public static string DB_PATH = Path.Combine(Path.Combine(ApplicationData.Current.LocalFolder.Path, "Tryout.sqlite"));
if (!CheckFileExists("Tryout.sqlite").Result)
{
CopyDatabase();
}
public async void CopyDatabase()
{
StorageFile dbFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Tryout.sqlite"));
StorageFolder localFolder = ApplicationData.Current.LocalFolder;
await dbFile.CopyAsync(localFolder, "Tryout.sqlite");
}
private async Task<bool> CheckFileExists(string fileName)
{
try
{
var store = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
return true;
}
catch (Exception ex)
{
}
return false;
}
如何处理?
答案 0 :(得分:0)
我已经测试了您的代码,问题是您在async
构造函数方法中使用了App
,这将导致线程阻塞。要检查文件是否存在,可以使用File.Exists
sync
方法来避免线程阻塞。我已经编辑了您的代码,请检查。
public App()
{
this.InitializeComponent();
this.Suspending += OnSuspending;
if (!CheckFileExists("Tryout.sqlite"))
{
CopyDatabase();
}
}
private bool CheckFileExists(string fileName)
{
bool isExist;
isExist = File.Exists(Path.Combine(ApplicationData.Current.LocalFolder.Path,fileName)) ? true : false;
return isExist;
}