Ich bin brandneu in C# obwohl einige kleinere Erfahrungen mit anderen Sprachen und haben eine Mauer getroffen.C# Parallel.Force mit XML
Der folgende Code funktioniert genau wie erwartet:
XmlDocument doc = new XmlDocument();
doc.Load("config.xml");
foreach (XmlNode node in doc.DocumentElement.ChildNodes)
{
string name = node.Attributes["name"].Value;
string ips = node.Attributes["ip"].Value;
string port = node.Attributes["port"].Value;
Console.WriteLine(name + " | " + ips + ":" + port);
}
Ich steige aus genau das, was ich mit Null-Fehler erwarte jedoch der folgende Code hat mich ratlos. Ich hoffe, dass jemand erklären kann, was ich falsch mache, da ich das Gefühl habe, etwas Grundlegendes zu vermissen.
XmlDocument doc = new XmlDocument();
doc.Load("config.xml");
node = doc.DocumentElement.ChildNodes;
Parallel.ForEach(node,
(item) => {
string name = item.Attributes["name"].Value;
string ips = item.Attributes["ip"].Value;
string port = item.Attributes["port"].Value;
Console.WriteLine(name + " | " + ips + ":" + port);
});
Ich versuche einfach, jede Iteration der Schleife parallel auszuführen. Wenn ich zu kompilieren versuchen bekomme ich folgende Fehlermeldung:
CS0411 Die Art Argumente für die Methode ‚Parallel.ForEach (IEnumerable, Aktion)‘ kann aus der Nutzung nicht abgeleitet werden. Versuchen Sie, die Typargumente explizit anzugeben.
Beispiel XML unter:
<item name="pc01" ip="192.168.0.10" port="80"><!--PC01--></item>
<item name="pc02" ip="192.168.0.11" port="80"><!--PC02--></item>
<item name="pc03" ip="192.168.0.12" port="80"><!--PC03--></item>
<item name="pc04" ip="192.168.0.13" port="80"><!--PC04--></item>
Jede Hilfe wäre sehr dankbar.
Was ist das Problem? – SLaks
Nebenbei, [die Dokumentation] (https://msdn.microsoft.com/en-us/library/system.xml.xmldokument (v = vs.110) .aspx) gibt an, dass 'XmlDocument' Thread nicht garantiert ist sicher. Obwohl es nicht sehr wahrscheinlich ist, dass Abfragen ein Problem verursachen, ist dies möglicherweise riskant. Haben Sie wirklich ein Performance-Problem im Singlethread-Fall? –
@Charles Mager, ich glaube XmlDocument sollte über Threads fein sein, wenn Sie nur lesen. –