我的应用程序性能在调试版本中很好但是当我将发布版本作为beta上传到商店时非常慢,我认为这可能是因为sqlite。我正在使用SQLite.WP80, Version=3.8.4.3
这是我的代码
using (var db = new SQLite.SQLiteConnection(App.DBPath))
{
verses = db.Table<schools>().ToList();
}
对我来说这似乎很奇怪,因为调试版本的性能很好
PS。该应用程序是为Windows Phone 8开发的,但我的设备破坏了8.1开发人员预览
答案 0 :(得分:0)
我会使用异步方法来获取数据。这将使应用程序感觉更具响应性
using (var db = new SQLite.SQLiteConnection(App.DBPath))
{
verses = await db.Table<schools>().ToListAsync();
}
答案 1 :(得分:0)
问题是因为数据库的位置,起初我只是将它添加到我的资产文件并直接从那里访问它,这是可以的,当我使用visual studio将我推送到设备 但是当我把它作为测试版上传到商店时,性能非常糟糕
解决方案: 我添加了一块将其复制到隔离的存储文件夹中,应用程序没问题
private void CopyDatabase()
{
IsolatedStorageFile ISF = IsolatedStorageFile.GetUserStoreForApplication();
String DBFile = "CountryDB.sqlite";
if (!ISF.FileExists(DBFile)) CopyFromContentToStorage(ISF, "Assets/CountryDB.sqlite", DBFile);
}
private void CopyFromContentToStorage(IsolatedStorageFile ISF, String SourceFile, String DestinationFile)
{
Stream Stream = Application.GetResourceStream(new Uri(SourceFile, UriKind.Relative)).Stream;
IsolatedStorageFileStream ISFS = new IsolatedStorageFileStream(DestinationFile, System.IO.FileMode.Create, System.IO.FileAccess.Write, ISF);
CopyStream(Stream, ISFS);
ISFS.Flush();
ISFS.Close();
Stream.Close();
ISFS.Dispose();
}
private void CopyStream(Stream Input, IsolatedStorageFileStream Output)
{
Byte[] Buffer = new Byte[5120];
Int32 ReadCount = Input.Read(Buffer, 0, Buffer.Length);
while (ReadCount > 0)
{
Output.Write(Buffer, 0, ReadCount);
ReadCount = Input.Read(Buffer, 0, Buffer.Length);
}
}