2017-01-16 3 views
4

Je travaille sur une application .NET qui utilise SQLite. Selon SQLite documentation, il prend en charge multi-threading et peut être utilisé dans l'un des 3 modes suivantMode sérialisé dans System.Data.SQLite pour .NET

  1. -fil à l'unité. Dans ce mode, tous les mutex sont désactivés et SQLite n'est pas sûr à utiliser dans plus d'un seul thread à la fois.
  2. Multi-thread. Dans ce mode, SQLite peut être utilisé en toute sécurité par plusieurs threads à condition qu'aucune connexion de base de données unique ne soit utilisée simultanément dans deux threads ou plus.
  3. Sérialisé. En mode sérialisé, SQLite peut être utilisé en toute sécurité par plusieurs threads sans restriction.

En ce qui concerne ces modes, j'essaie d'utiliser le Serialized où je partage la connexion unique à travers plusieurs tâches. Mais l'erreur est "L'opération n'est pas valide en raison de l'état actuel de l'objet"

Je suppose que cela est dû au partage d'une seule connexion entre les tâches. Mais Comme le mode Serialized, je devrais être en mesure de partager la connexion sans faire de verrouillage explicite ou d'implémentation de mutex. Quelqu'un peut-il me guider comment je peux utiliser le mode Serialized dans l'application .net? Est-ce que la chaîne de connexion doit être mentionnée d'une certaine manière?

Merci à l'avance!

+0

Utilisez simplement une connexion par thread. –

+0

Mais ce sera le mode d'enfilage "Multi-thread". Je ne veux pas créer de connexion à chaque fois que je parle à SqliteDB, donc j'utilise le mode "Serialized". –

+0

@CL. System.Data.SQLite prend-il réellement en charge le mode de threading "sérialisé"? –

Répondre

1

Sérialisé est le mode par défaut. Ne fermez pas la connexion ouverte à nouveau à la place de la même connexion unique partout sans avoir besoin de la fermer. SQLite prendra soin du repos. J'espère que cela t'aides.