【问题标题】:Are DbProviderFactory, DbConnection, DbCommand, and DbDataAdapter Thread-Safe?DbProviderFactory、DbConnection、DbCommand 和 DbDataAdapter 是线程安全的吗?
【发布时间】:2008-10-20 23:35:11
【问题描述】:

与 DbProviderFactory 线程相关的 .net 类是否安全?

【问题讨论】:

    标签: c# .net sql sql-server database


    【解决方案1】:

    来自 msdn: 线程安全

    此类型的任何公共静态(在 Visual Basic 中为共享)成员都是线程安全的。不保证任何实例成员都是线程安全的。

    【讨论】:

      【解决方案2】:

      当您说“这些实例在运行时生成一次,并在服务的剩余生命周期中使用”时,您是指连接对象吗?另外,您的意思是您在服务的整个生命周期中保持连接对象处于打开状态?如果您的服务是多线程的,并且您只有一个连接实例(例如单例或静态类),则必须确保一次仅由一个线程使用该连接。

      没有看到太多代码,这听起来像是你如何处理从工厂获得的 IDbConnection 而不是工厂本身的问题。

      我们在多线程应用程序中大量使用 DbProviderFactory,这些应用程序连接到 Oracle、FoxPro 和 SqlServer,我还没有看到这个问题。

      祝你好运!

      里卡多。

      【讨论】:

      • 不,我不是指连接对象。我的意思是通过调用 DbProviderFactories.GetFactory() 创建的实际 DbProviderFactory 对象。所以工厂只创建一次,然后用于创建连接、命令、适配器和参数。
      猜你喜欢
      • 2011-03-30
      • 2011-08-02
      • 2011-01-29
      • 2021-06-19
      • 2021-07-01
      • 2011-10-08
      • 2021-10-12
      • 2015-04-18
      • 2011-10-07
      相关资源
      最近更新 更多