Freigeben über


Windows.System.Threading.Core Namespace

Erstellt Arbeitselemente, die als Reaktion auf benannte Ereignisse und Semaphore ausgeführt werden. Außerdem werden Ressourcen für Arbeitselemente vorab zugewiesen, für die die Ausführungsfähigkeit garantiert werden muss, auch unter Umständen mit einer hohen (oder vollständigen) Ressourcenzuweisung.

Hinweis

Die ThreadPool-API wird sowohl für Desktop- als auch für UWP-Apps unterstützt.

PreallocatedWorkItemWenn Arbeitselemente mit ThreadPool erstellt werden. RunAsync: Das Arbeitselement wird als einzelner Vorgang erstellt und übermittelt. Dies ist für die meisten Szenarien akzeptabel, aber es ist manchmal notwendig, Ressourcen für ein Arbeitselement im Voraus zurückzulegen.

Die PreallocatedWorkItem-Klasse erstellt ein Arbeitselement im Voraus und legt das Arbeitselement im Standbymodus, sodass es bei Bedarf an den Threadpool übermittelt werden kann. Dies ist nützlich, wenn die für Ihre App verfügbaren Ressourcen vollständig zugeordnet werden, bevor das Arbeitselement benötigt wird, z. B. das Aufrufen einer Deallocation-Routine, die ein Arbeitselement verwendet. Wenn bereits ein Arbeitselement zugewiesen wurde, kann die Ressourcen-Deallocation-Routine weiterhin aufgerufen werden, und das PreallocatedWorkItem kann weiterhin an den Threadpool übermittelt werden, auch wenn alle Ressourcen bereits verwendet werden. Manchmal ist es erforderlich, Arbeitselemente als Reaktion auf benannte Ereignisse oder Semaphore, die von Win32 COM-Objekten erstellt wurden, in die Warteschlange zu stellen. Sie können eine Windows-Runtime-Methode als Antwort auf ein benanntes Ereignis oder Semaphor mithilfe eines SignalNotifier-Objekts ausführen. Dadurch können Sie Windows-Runtime Code schreiben, der auf Ereignisse und Signale reagiert, die mit Win32 und COM für gesendet werden, vorausgesetzt, das Ereignis oder Semaphor hat einen Namen. Beispielsweise kann der SignalNotifier verwendet werden, um mit Win32-Code zu arbeiten, der in eine UWP-App portiert wird. ISignalableNotifierGelegentlich ist es nicht möglich, den Namen eines Ereignisses oder Semaphors zu kennen, aber Ihre App muss trotzdem darauf reagieren. Beispielsweise verwenden Legacycode und einige bekannte Ereignisse und Semaphore weiterhin wartebare Handles anstelle von Namen. Mit ISignalableNotifier können Sie ISignalNotifier-Objekte erstellen, die mit wartebaren Handles registriert sind.

Hinweis

Vorab zugewiesene Arbeitselemente werden nur für Apps benötigt, die möglicherweise alle verfügbaren Ressourcen aufbrauchen oder Arbeitselemente für Ressourcendeallocationroutinen erstellen müssen. Signalnotifier gelten nur für bestimmte Apps, die Win32 und COM für verwenden. Wenn Sie keine Vorabzuordnung oder Signalisierung in Ihrer App verwenden müssen, erstellen Sie Arbeitselemente mithilfe von Windows.System.Threading.

Klassen

PreallocatedWorkItem

Ein vorab zugeordnetes Arbeitselement wird vor der Übermittlung an den Threadpool erstellt, um sicherzustellen, dass das Arbeitselement so erstellt wird, dass es bei Bedarf an den Threadpool übermittelt werden kann. Beispielsweise kann ein PreallocatedWorkItem erstellt werden, falls es für eine Ressourcendeallocation-Routine erforderlich ist, da die Ressourcendeallocationroutine möglicherweise unter Umständen aufgerufen wird, wenn nicht genügend Ressourcen zum Erstellen des Arbeitselements verfügbar wären.

Hinweis

Die ThreadPool-API wird sowohl für Desktop- als auch für UWP-Apps unterstützt.

SignalNotifier

Führt eine Methode aus, wenn ein Ereignis oder Semaphor signalisiert wird. Es kann auch ein Timeoutwert angegeben werden, der dazu führt, dass der Delegat ausgeführt wird, nachdem die Zeitspanne abgelaufen ist, wenn das benannte Ereignis nicht auftritt (oder wenn das Semaphor keinen signalierten Zustand erreicht).

Hinweis

Die ThreadPool-API wird sowohl für Desktop- als auch für UWP-Apps unterstützt.

Delegaten

SignalHandler

Stellt eine Methode dar, die aufgerufen wird, wenn das angefügte Ereignis oder Semaphor eines Signalnotifizierers signalisiert wird oder wenn der optionale Timeoutwert abgelaufen ist (je nachdem, was zuerst eintritt).