如果我使用线程获取大量数据,我应该使用多个连接吗?

时间:2013-11-13 09:02:12

标签: c# multithreading db2 ibm-midrange

我正在使用AS400的iDB2 / iSeries连接器一次性获取大量数据。我正在创建一个与数据库的连接,为了提高性能,我使用这个与几个线程(类似10)。总之,创建了50个命令然后处理掉,每个DataReader都被关闭。

一切都很好,除了一件事:我无法关闭那个连接。我得到以下异常(第一行表示'对象引用未设置为对象的实例'):

    {"La référence d'objet n'est pas définie à une instance d'un objet."}
    [System.NullReferenceException]: {"La référence d'objet n'est pas définie à une instance d'un objet."}
    Data: {System.Collections.ListDictionaryInternal}
    HelpLink: null
    HResult: -2147467261
    InnerException: null
    Message: "La référence d'objet n'est pas définie à une instance d'un objet."
    Source: "IBM.Data.DB2.iSeries"
    StackTrace: "   à IBM.Data.DB2.iSeries.iDB2Connection.Close()\r\n   à WcfApp.Metier.InitApp() dans c:\\projet\\WSApp.cs:ligne 450"
    TargetSite: {Void Close()}

1 个答案:

答案 0 :(得分:2)

  1. 使用Task代替Thread将使您的数据处理更加透明和清晰。
  2. 关心分享您的连接 - 如果需要,请使用lock声明。
  3. 了解事务范围和连接池 - 这是使用数据库连接时需要了解的内容。