2014-06-15 3 views
0

mes performances de l'application est très bien dans la version de débogage, mais très lent quand j'ai téléchargé la version de la version bêta du magasin, je pense que ce pourrait être à cause de sqlite. J'utilise SQLite.WP80, Version=3.8.4.3 voici mon codewindows téléphone 8 sqlite store bêta application performances problèmes

using (var db = new SQLite.SQLiteConnection(App.DBPath)) 
{ 
    verses = db.Table<schools>().ToList(); 
} 

il semble étrange pour moi que la performance est bonne dans la version de débogage

ps. l'application est développée pour Windows Phone 8 mais mon appareil ruiner 8.1 aperçu du développeur

+0

Avez-vous essayé d'utiliser la nouvelle version 3.8.5. – Kulasangar

+0

nop, mais le problème semble être apparu après son téléchargement dans le magasin en tant que version bêta. je vais essayer la nouvelle version –

Répondre

0

le problème en raison de l'emplacement de la base de données, au début, je viens d'ajouter à mon actif fichier et d'y accéder directement à partir de là, ça allait quand je pousse mon à l'appareil en utilisant le studio visuel mais quand je le télécharger la version en bêta au magasin la performance était très très mauvais

la solution: i ajouté un morceau de le copier dans le dossier de stockage isolé en premier lieu, l'application était correct

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); 
     } 
    } 
0

Je voudrais utiliser les méthodes asynchrones pour obtenir des données. Il fera l'application sentir plus sensible

using (var db = new SQLite.SQLiteConnection(App.DBPath)) 
{ 
    verses = await db.Table<schools>().ToListAsync(); 
} 
Questions connexes