.NET 4.5 の新しい非同期メソッドを使用して、MSSQL からの XML 読み取りを実装しようとしています。
次のコードがあります
var xmlReader = await sqlCommand.ExecuteXmlReaderAsync();
while (await xmlReader.ReadAsync())
{
var doc = (MyDocument)xmlSerializer.Deserialize(xmlReader);
await Process(doc);
}
Async メソッドを使用する場合は、Set XmlReaderSettings.Async to trueで失敗します。.
ExecuteXmlReaderAsync の逆コンパイルされたソースを確認したところ、次の設定のいずれかが使用されていることがわかります。
private static readonly XmlReaderSettings DefaultXmlReaderSettings = new XmlReaderSettings()
{
ConformanceLevel = ConformanceLevel.Fragment
};
private static readonly XmlReaderSettings DefaultXmlReaderSettingsCloseInput = new XmlReaderSettings()
{
ConformanceLevel = ConformanceLevel.Fragment,
CloseInput = true
};
ExecuteXmlReaderAsync がうまく実装されていないようです。
この方法をうまく使用した経験がある場合は、アドバイスをお願いします。
UPD: xmlReader.Settings.Async は読み取り専用であるため、オブジェクトの作成時に設定する必要があります