Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema werden bewährte Methoden für das Arbeiten mit dem Threadpool beschrieben.
Empfohlen
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.
Senden Sie Aktualisierungen an den UI-Thread. Verwenden Sie in WinUI 3-Apps
DispatcherQueue.TryEnqueueausMicrosoft.UI.Dispatching.DispatcherQueue.Verwenden Sie ThreadPoolTimer.CreateTimer anstelle der Sleep-Funktion.
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.
DONT‘s
Erstellen Sie keine periodischen Zeitgeber mit einem Punktwert von <1 Millisekunden (einschließlich 0). Dies führt dazu, dass sich das Arbeitselement wie ein 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-Aktualisierungen (mit Ausnahme von Toastbenachrichtigungen und Benachrichtigungen) aus einem Arbeitselement auszulösen, das von einer Hintergrundaufgabe ausgelöst wurde. 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 innerhalb des Handlers, der auf das Schlüsselwort await folgt, wird möglicherweise erst ausgeführt, nachdem das Arbeitselement als abgeschlossen markiert wurde.
Versuchen Sie nicht, eine zuvor zugewiesene Arbeitsaufgabe mehrmals auszuführen, ohne sie erneut zu initialisieren. Erstellen einer regelmäßigen Arbeitsaufgabe
Zugehörige Themen
Windows developer