msdn ドキュメント内で XmlWriter を使用した非同期の例を見つけましたhttp://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx
async Task TestWriter(Stream stream)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Async = true;
using (XmlWriter writer = XmlWriter.Create(stream, settings)) {
await writer.WriteStartElementAsync("pf", "root", "http://ns");
await writer.WriteStartElementAsync(null, "sub", null);
await writer.WriteAttributeStringAsync(null, "att", null, "val");
await writer.WriteStringAsync("text");
await writer.WriteEndElementAsync();
await writer.WriteProcessingInstructionAsync("pName", "pValue");
await writer.WriteCommentAsync("cValue");
await writer.WriteCDataAsync("cdata value");
await writer.WriteEndElementAsync();
await writer.FlushAsync();
}
}
スレッドと非同期プログラミングについて私が知っていることは、これは遅すぎるコードであり、同期書き込みメソッドを使用するとはるかに高速になるということです。このコードを変更してテストしました。私の環境では、100Mb を超えるファイルでは 3 ~ 4 倍、10 MB 未満のファイルでは 8 ~ 10 倍以上、同期コードが高速であることがわかりました。
だから私の質問は、そのようなコードが使用可能で、合理的なパフォーマンスの向上をもたらすシナリオはありますか?