Bewährte Methoden zum Verwenden des Threadpools

In diesem Thema werden bewährte Methoden für die Verwendung des Threadpools beschrieben.

Empfohlene Vorgehensweisen

  • Verwenden Sie den Threadpool, um parallele Vorgänge in Ihrer App auszuführen.

  • Verwenden Sie Arbeitselemente, um längere Aufgaben auszuführen, ohne den UI-Thread zu blockieren.

  • Erstellen Sie kurzlebige und unabhängige Arbeitselemente. Arbeitsaufgaben werden asynchron ausgeführt und können in beliebiger Reihenfolge von der Warteschlange an den Pool gesendet werden.

  • Verwenden Sie Windows.UI.Core.CoreDispatcher, um Updates an den UI-Thread zu verteilen.

  • Verwenden Sie ThreadPoolTimer.CreateTimer anstelle der Sleep-Funktion.

  • Verwenden Sie den Threadpool, anstatt ein eigenes Threadverwaltungssystem zu erstellen. Der Threadpool wird auf Betriebssystemebene ausgeführt, bietet erweiterte Funktionen und ist für die dynamische Skalierung je nach Geräteressourcen und Aktivitäten innerhalb des Prozesses und im gesamten System optimiert.

  • Stellen Sie in C++ sicher, dass Arbeitselementedelegate das Agile-Threadingmodell verwenden (C++-Delegate sind standardmäßig agil).

  • Verwenden Sie vorab zugeordnete Arbeitselemente, wenn Sie einen Fehler bei der Ressourcenzuweisung zum Zeitpunkt der Verwendung nicht tolerieren können.

DONT‘s

  • Erstellen Sie keine regelmäßigen Timer mit einem period-Wert von <1 Millisekunde (einschließlich 0). Andernfalls verhält sich das Arbeitselement wie ein einmaliger Timer.

  • Senden Sie keine regelmäßigen Arbeitsaufgaben, deren Ausführung länger dauert als die im period-Parameter festgelegte Dauer.

  • Senden Sie keine Benutzeroberflächenaktualisierungen (mit Ausnahme von Popups und Benachrichtigungen) von eines Arbeitselement, die von einer Hintergrundaufgabe übermittelt wird. Verwenden Sie stattdessen Status- und Abschlusshandler für Hintergrundaufgaben, z. B. IBackgroundTaskInstance.Progress.

  • Beachten Sie bei der Verwendung von Arbeitsaufgabenhandlern mit dem async-Schlüsselwort, dass die Threadpool-Arbeitsaufgabe möglicherweise vor der Ausführung des gesamten Codes im Ereignishandler auf den Status „Abgeschlossen“ gesetzt wird. Code, der innerhalb des Handlers auf ein await-Schlüsselwort folgt, kann ausgeführt werden, nachdem die Arbeitsaufgabe auf den Status „Abgeschlossen“ gesetzt wurde.

  • Führen Sie ein vorab zugeordneten Arbeitselement nicht mehrmals aus, ohne sie erneut zu initialisieren. Erstellen ein regelmäßiges Arbeitselement