windows phone 8 sqlite store beta app性能问题

时间:2014-06-15 16:34:46

标签: sqlite windows-phone

我的应用程序性能在调试版本中很好但是当我将发布版本作为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开发人员预览

2 个答案:

答案 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);
        }
    }