在ADO.NET 4.0中处理多个连接到多个Excel文件的正确方法是什么?

我有一段使用VS 2005编写的代码,可以在运行.NET 2.0的计算机上正常工作,但是在运行.NET 4.0的计算机上发生严重的崩溃。

造成问题的hte代码部分是对DataAdapter的Fill()方法的调用。 代码如下所示:

private void button_Click(object sender, EventArgs e) { DataTable dt1 = new DataTable(); string connectionString = ... //connects to excelfile1.xls string selectCommand = "SELECT * FROM [Sheet1$]"; using(OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connectionString)) { adapter.SelectCommand.Connection.Open(); adapter.Fill(dt1); } DataTable dt2 = new DataTable(); connectionString = ... //connects to excelfile2.xls using(OleDbDataAdapter adapter = new OleDbDataAdapter(selectCommand, connectionString)) { adapter.SelectCommand.Connection.Open(); adapter.Fill(dt2); } } 

如果我稍微修改一下代码,会发生几件事情:

  1. 如果我将两个对OleDbConnection.Open()的调用删除,代码将在.NET 2.0下正常工作,但是与.NET 4.0一起崩溃。

  2. 如果我只删除第二次调用OleDbConnection.Open(),代码将与.NET 2.0和.NET 4.0正常工作。 唉,我需要从两个独立的Excel文件中检索数据,并在每次事件触发时填充两个单独的DataTable。

  3. 如果我使用两个调用OleDbConnection.Open(),如上面的代码所示,代码将正常工作与.NET 2.0和.NET 4.0,但硬件崩溃与NET 4.0的第二次或第三次用户点击button,程序运行。

我的猜测是,.NET 4.0pipe理连接不同于.NET 2.0,我错过了一些非常重要的步骤。

有人可以告诉我应该如何编写上述代码,以便在.NET 2.0和.NET 4.0下正常工作吗?

问题是“应用程序validation程序”。