我正在尝试使用 .NET 4.5 中的新异步方法实现从 MSSQL 读取 XML。
我有以下代码
var xmlReader = await sqlCommand.ExecuteXmlReaderAsync();
while (await xmlReader.ReadAsync())
{
var doc = (MyDocument)xmlSerializer.Deserialize(xmlReader);
await Process(doc);
}
如果您想使用异步方法,它将失败并设置 XmlReaderSettings.Async 为 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 是只读的,因此应在创建对象时设置