I Beispiel Dokumentation Asynchron mit den XmlWriter innerhalb Msdn gefunden haben http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspxXmlWriter asynchrone Methoden
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();
}
}
Alles, was ich über Themen und asynchrone Programmierung kennen, sagte mir, dass dies zu langsam Code ist und synchrone Write-Methoden verwenden, wird sein viel schneller. Ich habe diesen Code geändert und getestet. Ich habe festgestellt, dass ich richtig bin und synchronen Code schneller in 3-4 mal auf Dateien mehr als 100 MB und mehr als 8-10 mal schneller auf Dateien weniger als 10 MB auf meinem env.
Also meine Frage gibt es irgendein Szenario, wo solcher Code verwendbar ist und angemessene Leistungssteigerungen bietet?
Hier ist mein Testcode auf Pastebin http://pastebin.com/67EfUbPN –
Wie ich vermutete, öffnen Sie den Dateistream nicht asynchron. Weitere Informationen finden Sie in der [MSDN-Dokumentation (erste paar Absätze unter Bemerkungen)] (http://msdn.microsoft.com/en-us/library/system.io.filestream.aspx). –
Auch wenn ich FileOptions.Asynchron wie dieser Stream str = File.Create (FILE_NAME_A, 6140, FileOptions.Asynchronous); es wird nur um 5-10% langsamer –