Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Gewusst wie: Erstellen und Ausführen einer einfachen PLINQ-Abfrage

Im folgenden Beispiel wird gezeigt, wie Sie mithilfe der AsParallel-Erweiterungsmethode in der Quellsequenz eine einfache PLINQ-Abfrage erstellen und die Abfrage mit der ForAll<TSource>-Methode ausführen.

HinweisHinweis

In dieser Dokumentation werden Delegaten in PLINQ mithilfe von Lambda-Ausdrücken definiert. Falls Sie mit der Verwendung von Lambda-Ausdrücken in C# oder Visual Basic nicht vertraut sind, finden Sie entsprechende Informationen unter Lambda-Ausdrücke in PLINQ und TPL.


            var source = Enumerable.Range(100, 20000);

            // Result sequence might be out of order.
            var parallelQuery = from num in source.AsParallel()
                                where num % 10 == 0
                                select num;

            // Process result sequence in parallel
            parallelQuery.ForAll((e) => DoSomething(e));

            // Or use foreach to merge results first.
            foreach (var n in parallelQuery)
            {
                Console.WriteLine(n);
            }

            // You can also use ToArray, ToList, etc
            // as with LINQ to Objects.
            var parallelQuery2 = (from num in source.AsParallel()
                                  where num % 10 == 0
                                  select num).ToArray();

            // Method syntax is also supported
            var parallelQuery3 = source.AsParallel().Where(n => n % 10 == 0).Select(n => n);



In diesem Beispiel wird das grundlegende Muster zum Erstellen und Ausführen einer beliebigen PLINQ-Abfrage dargestellt, wenn die Reihenfolge der Ergebnissequenz irrelevant ist. Ungeordnete Abfragen werden im Allgemeinen schneller ausgeführt als geordnete Abfragen. Die Abfrage unterteilt die Quelle in Aufgaben, die asynchron in mehreren Threads ausgeführt werden. Die Reihenfolge, in der die einzelnen Aufgaben abgeschlossen werden, hängt nicht nur vom Arbeitsaufwand für die Verarbeitung der in jedem Teil enthaltenen Elemente ab, sondern auch von externen Faktoren, z.B. die Planung jedes Threads im Betriebssystem. Dieses Beispiel soll die Verwendung veranschaulichen, und es wird möglicherweise nicht schneller als die entsprechende sequenzielle LINQ to Objects-Abfrage ausgeführt. Weitere Informationen über Geschwindigkeitssteigerungen finden Sie unter Grundlagen zur Beschleunigung in PLINQ. Weitere Informationen zum Beibehalten der Reihenfolge von Elemente in einer Abfrage finden Sie unter Gewusst wie: Steuern der Sortierung in einer PLINQ-Abfrage.

  • Erstellen einer Konsolenanwendung

  • Fügen Sie das Codebeispiel nach der Main-Methode ein.

  • Fügen Sie einen Aufruf von SimpleQuery in Main hinzu, und drücken Sie F5.

Datum

Versionsgeschichte

Grund

Mai 2010

Hinweis bezüglich Verwendung und Geschwindigkeitssteigerung hinzugefügt.

Kundenfeedback.

Anzeigen: