2012-11-14 67 views
0

我有一個很漂亮的常規選擇調用SqlDataReader.Close()需要10多秒才能返回的情況。唯一不尋常的是select返回20行,但在這種情況下,沒有行被讀取。SqlDataReader關閉需要10多秒 - 爲什麼?

DbDataReader reader = (DbDataReader) cmd.ExecuteReader(CommandBehavior.Default); 
reader.MoveNext(); 
var row = de.Current; 

// lots of other code that does not touch this. 
reader.Close(); 

爲什麼需要這麼長時間?更重要的是,我可以做些什麼來加快速度?

+0

這是一個冗長的查詢,需要大量的處理? – Fallenreaper

+0

Northwind的所有訂單都沒有那麼複雜,也沒有那麼長。另外它的Close()花費時間。 –

+0

你在reader.Close()周圍設置了一個計時器。確認?我認爲有些事情在它關閉之前等待完成。 – Fallenreaper

回答

0

我找不到這是爲什麼發生。因此,在關閉對象的調用中,我創建了一個工作線程並關閉數據讀取器和連接。然後我立即返回,以便用戶不會看到任何延遲。工作正常。

更新:作爲每SqlDataReader.Close()它可以通過調用調用Close方法之前取消關聯SqlCommand對象的方法被減小。 h/t Lingaraj Mishra

相關問題