2008-10-20 4 views

Répondre

0

Quand vous dites « Ces cas sont générés une fois au moment de l'exécution, et utilisé pour le reste de la vie du service », voulez-vous dire l'objet de connexion? Aussi, voulez-vous dire que vous gardez l'objet de connexion ouvert tout au long de la vie de votre service? Si votre service est multi-thread et vous avez seulement une instance de la connexion (disons par exemple un singleton ou une classe statique), vous devez vous assurer que la connexion est utilisé par un fil à la fois.

Si vous ne voyez pas beaucoup de code, cela ressemble à un problème avec la façon dont vous traitez l'IDbConnection que vous obtenez de l'usine, au lieu de l'usine elle-même.

Nous utilisons DbProviderFactory très fortement pour nos applications multithread, qui se connectent à Oracle, FoxPro et SqlServer et je n'ai pas vu ce problème.

Bonne chance!

Ricardo.

+0

Non, je ne parle pas de l'objet de connexion. Je veux dire l'objet réel DbProviderFactory, créé en appelant DbProviderFactories.GetFactory(). Ainsi, l'usine est créée une seule fois et utilisée à partir de ce moment pour créer des connexions, des commandes, des adaptateurs et des paramètres. –

3

de msdn: Sécurité des threads

Tous les membres static (Shared dans Visual Basic) de ce type sont thread-safe. Tous les membres d'instance ne sont pas garantis être thread safe.

Questions connexes