OledbConnection Close和/或Dispose非常慢,需要20秒才能执行

当使用OleDbConnection来访问excel文件的表名时,我遇到了一个问题。 代码中的所有东西都可以正常执行,直到OleDbConnection在using语句结束时closures。 这导致程序停止15-20秒或更多!

我试着摆脱使用语句,并单独使用OleDbConnection.Close()和OleDbConnection.Dispose()方法,这些都需要非常长的执行。 如果我从来没有closures连接,程序运行完美。

//Closing connection is inredibly slow now for some reason using (OleDbConnection conn = new OleDbConnection(connectString)) { conn.Open(); DataTable dbSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); sheetNames.Clear(); for (int i = 0; i < dbSchema.Rows.Count; i++) { sheetNames.Add(dbSchema.Rows[i]["TABLE_NAME"].ToString()); } comboBox1.Items.Clear(); comboBox1.Items.AddRange(sheetNames.ToArray()); comboBox1.SelectedIndex = 0; //conn.Close(); } //Connection strings //XLS connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties='Excel 8.0;HDR=No;IMEX=1;';" /> //XLSX connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties='Excel 12.0;HDR=No;IMEX=1;';" 

我注意到一个非常奇怪的事情是连接需要很长时间才能closures所有types的excel文件EXCEPT .xls文件(从1997 – 2003年Excel)。

除此之外,我在互联网上到处search,实际上找不到任何人find解决方法,只有未解决的论坛post。 以下是我从那些有同样问题的人那里find的一些链接:

OleDbConnectionclosures方法需要很长的执行时间 ,

OleDbConnection处置很慢(2s)

http://forums.asp.net/t/2059359.aspx?OledbConnection+Close+taking+too+long+to+execute