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 Arbeiten in Ihrer App auszuführen.
Verwenden Sie Arbeitsaufgaben, um erweiterte Aufgaben auszuführen, ohne den UI-Thread zu blockieren.
Erstellen Sie Arbeitsaufgaben, die kurzlebig und unabhängig sind. Arbeitsaufgaben werden asynchron ausgeführt, und sie können in beliebiger Reihenfolge aus der Warteschlange an den Pool übermittelt werden.
Verteilen Sie Aktualisierungen an den UI-Thread mit dem Windows.UI.Core.CoreDispatcher.
Verwenden Sie ThreadPoolTimer.CreateTimer anstelle der Funktion "Standbymodus".
Verwenden Sie den Threadpool, anstatt Ein eigenes Threadverwaltungssystem zu erstellen. Der Threadpool wird auf Betriebssystemebene mit erweiterter Funktion ausgeführt und ist für die dynamische Skalierung entsprechend Den Geräteressourcen und -aktivitäten innerhalb des Prozesses und des gesamten Systems optimiert.
Stellen Sie in C++ sicher, dass Arbeitsaufgabendelegat das agile Threadingmodell verwenden (C++-Delegaten sind standardmäßig agil).
Verwenden Sie vorab zugeordnete Arbeitsaufgaben, wenn Sie einen Ressourcenzuordnungsfehler zum Zeitpunkt der Verwendung nicht tolerieren können.
Was Sie nicht tun sollten
Erstellen Sie keine periodischen Zeitgeber mit einem Punktwert von <1 Millisekunden (einschließlich 0). Dies führt dazu, dass sich die Arbeitsaufgabe als Single-Shot-Timer verhält.
Senden Sie keine regelmäßigen Arbeitsaufgaben, die länger dauern als die Zeit, die Sie im Parameter "Period " angegeben haben.
Versuchen Sie nicht, Ui-Updates (außer Popups und Benachrichtigungen) von einer Arbeitsaufgabe zu senden, die von einer Hintergrundaufgabe gesendet wird. Verwenden Sie stattdessen Status- und Abschlusshandler für Hintergrundaufgaben, z. B. IBackgroundTaskInstance.Progress.
Wenn Sie Arbeitselementhandler verwenden, die das asynchrone Schlüsselwort verwenden, gehen Sie nicht davon aus, dass der gesamte Code im Handler ausgeführt wurde, wenn der vollständige Zustand für die Arbeitsaufgabe festgelegt wurde. Die Arbeitsaufgabe des Threadpools kann auf den vollständigen Zustand festgelegt werden, bevor der gesamte Code im Handler ausgeführt wurde. Code nach einem Await-Schlüsselwort innerhalb des Handlers kann ausgeführt werden, nachdem die Arbeitsaufgabe auf den vollständigen Zustand festgelegt wurde.
Versuchen Sie nicht, eine zuvor zugewiesene Arbeitsaufgabe mehrmals auszuführen, ohne sie erneut zu initialisieren. Erstellen ein regelmäßiges Arbeitselement