2010-11-11 13 views
3

文檔here指出爲什麼需要EndExecuteNonQuery()?

開發商必須調用 EndExecuteNonQuery方法完成 操作。

我一直沒有找到一個很好的理由,爲什麼這是,或者什麼結果不叫EndExecuteNonQuery是。

任何洞察,如果它不被稱爲會發生什麼?我不想阻止它,有沒有辦法讓它在AsyncCallback中被自動調用?

回答

4

這會做這樣的事情:

  • 更新的參數值(出/返回)
  • 檢查異常(在TDS流中的錯誤代碼 - 違反約束等)
  • 發佈的任何對象/數據作爲緩衝以上等的一部分

所以,是的:做

1

根據定義,這樣的異步調用不能在使用塊中進行,以確保連接已關閉。因此,調用EndExecutexxx是必要的。

綜觀反射器的代碼,我們可以看到在關閉了EndExecuteNonQuery連接的跟蹤:

SqlDataReader reader = this.CompleteAsyncExecuteReader(); 
if (reader != null) 
{ 
     reader.Close(); 
} 
+0

EndExecuteNonQuery不會關閉連接... – 2010-11-11 23:36:52

+0

有一點似乎做到這一點,請參閱我的更新。 – Aliostad 2010-11-12 00:36:27