2013-05-26 5 views
0

J'écris une application Windows Store qui récupère des informations du serveur et les affiche localement. Pour augmenter la «réactivité» de l'application, j'ai décidé de stocker les résultats de la requête dans le stockage des données de l'application locale. Avant qu'une demande ne soit soumise, elle vérifie la réponse enregistrée dans le magasin local et l'affiche en premier. J'ai considéré 2 options SQLite et E/S de fichier normal et j'ai choisi ce dernier. Pendant que je l'implémentais, j'ai trouvé qu'il peut y avoir des cas où le même fichier est lu et écrit en même temps. J'utilise la classe FileIO, plus spécifiquement les méthodes WriteTextAsync et ReadTextAsync. FileIO nous aide-t-il à gérer la lecture simultanée et l'écriture dans le même fichier, comme bloquer la lecture pendant la lecture? Au fait, cela sera-t-il plus rapide si j'utilise SQLite au lieu de FileIO? Et SQLite gère-t-il bien ce cas?Concurrence avec Windows FileIO

Merci beaucoup!

Répondre

0

Généralement, il est contre-productif d'utiliser la concurrence avec le fichier IO, à cause de la nature tournante des disques durs, sauf si vous avez RAID. Donc, la lecture/écriture simultanée va certainement ralentir la performance. Toutefois, il est judicieux de séparer les appels d'E/S de fichiers du thread d'interface utilisateur en appelant de manière asynchrone le fichier IO api.

Veuillez noter que le composant de l'interface utilisateur n'est pas thread-safe, vous devez donc synchroniser le retour du thread IO du fichier.

+0

Nous vous remercions de votre réponse. Il semble être plus difficile à implémenter avec FileIO donc je pense que je ferais mieux de passer à sqlite. – hanlindev

+0

Je peux me tromper, mais sqlite étant une base de données de système de fichiers, vous aurez probablement le même problème. – Mat