3

我正在使用用于 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()}
4

1 回答 1

2
  1. 使用Task而不是 Thread 将使您的数据处理更加透明和清晰。
  2. 关心共享您的连接 - 如果需要,请使用lock语句。
  3. 阅读有关事务范围和连接池的信息 - 这是您在使用数据库连接时需要了解的内容。
于 2013-11-13T09:15:55.833 回答