バグが発生しているのか、それともどのように機能するのかわかりません。そのため、最近、この例外を解決しようとしておりMySql.Data.MySqlClient.MySqlException: 'There is already an open DataReader associated with this Connection which must be closed first.'
、何が起こっているのかを確認するためにデバッグ セッションを開始しました。私が見たものは、私の頭の中で完全に計算されていません (添付のスクリーンショットを参照)。
を呼び出した後reader.Close()
、プロパティIsClosed
は false のままになり、(即時ウィンドウで) を繰り返し呼び出して.Close()
もそれは変わりません。
これは予期された動作であり、私の問題は別の場所にありますか? それとも、これはバグであり、例外の原因ですか?
これは、MySql.Data
現時点で .NET Standard をサポートしている唯一の v6.10.3-rc (nuget.org から) を使用している場合に発生します。また、コードは .NET Core 2.0 アプリにコンパイルされます。
UPD :周りにはタスクがありますが、リーダーはメインスレッドからのみ操作されます。また、reader
は として宣言されDbDataReader
、そこからMySqlDataReader
が継承されます。
UPD2 : どうやら、 を呼び出す((MySql.Data.MySqlClient.MySqlDataReader)reader).Close()
と、リーダーが適切に閉じます。コネクタのバグと、それらが仮想メソッドを使用する方法のように見えます。右?