我不太確定我是否遇到錯誤,或者我沒有弄清它應該如何工作。所以最近我一直試圖解決這個異常MySql.Data.MySqlClient.MySqlException: 'There is already an open DataReader associated with this Connection which must be closed first.'
,我開始了一個調試會話,看看發生了什麼。我看到的並不完全在我腦海中計算(見附件截圖)。在讀取器上調用Close()後,MySqlDataReader不會關閉
在我致電reader.Close()
後,IsClosed
屬性保持爲false,並且重複調用.Close()
(在直接窗口中)不會改變該屬性。
這是預期的行爲,我的問題是在別的地方,或者這是一個錯誤和異常的原因?
在使用MySql.Data
v6.10.3-rc(來自nuget.org)時,會發生這種情況,它是目前唯一支持.NET標準的版本。此外,代碼被編譯爲.NET Core 2.0應用程序。
UPD:有一些任務,但讀者只能從主線程工作。另外,reader
被宣告爲DbDataReader
,從中繼承MySqlDataReader
。
UPD2:顯然,如果我打電話給((MySql.Data.MySqlClient.MySqlDataReader)reader).Close()
,那麼閱讀器會正常關閉。在我看來,就像連接器中的一個錯誤,以及他們如何使用虛擬方法。對?
你是否在一個異步任務? – apomene
@apomene Nope,任務外,正常的單線程代碼。有任務,但他們沒有處理讀者,只有從讀者的數據。 – bazzilic
如果您調用'reader.Dispose()',會發生什麼?它是否被處置? – waka