Windows.System.Threading.Core Spazio dei nomi
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea elementi di lavoro eseguiti in risposta a eventi e semafori denominati. Prealloca anche le risorse per gli elementi di lavoro che devono essere garantite la possibilità di eseguire, anche in circostanze di allocazione di risorse pesanti (o complete).
Nota
L'API ThreadPool è supportata per le app desktop e UWP.
PreallocatedWorkItemQuando gli elementi di lavoro vengono creati usando ThreadPool. RunAsync, l'elemento di lavoro viene creato e inviato come singola operazione. Questo è accettabile per la maggior parte degli scenari, ma a volte è necessario riservare le risorse per un elemento di lavoro in anticipo.
La classe PreallocatedWorkItem costruisce un elemento di lavoro in anticipo, inserendo l'elemento di lavoro "in standby" in modo che possa essere inviato al pool di thread quando necessario. Ciò è utile nei casi in cui le risorse disponibili per l'app vengono allocate completamente prima che l'elemento di lavoro sia necessario, ad esempio chiamando una routine di deallocazione che usa un elemento di lavoro. Se un elemento di lavoro è già stato allocato, è comunque possibile chiamare la routine di deallocazione delle risorse e l'oggetto PreallocatedWorkItem può comunque essere inviato al pool di thread anche se tutte le risorse sono già in uso. A volte è necessario accodare gli elementi di lavoro in risposta a eventi denominati o semafori creati da oggetti COM Win32. È possibile eseguire un metodo Windows Runtime in risposta a un evento o a un semaforo denominato usando un oggetto SignalNotifier. In questo modo è possibile scrivere Windows Runtime codice che risponde agli eventi e ai segnali inviati usando Win32 e COM per , purché l'evento o il semaforo abbia un nome. Ad esempio, SignalNotifier può essere usato per usare il codice Win32 che viene convertito in un'app UWP. ISignalableNotifierOccasionalmente non è possibile conoscere il nome di un evento o semaforo, ma l'app deve comunque rispondere; ad esempio il codice legacy e alcuni eventi noti e semafori, usano comunque handle waitable anziché nomi. ISignalableNotifier consente di creare oggetti ISignalNotifier registrati con handle waitable.
Nota
Gli elementi di lavoro preallocati sono necessari solo per le app che possono usare tutte le risorse disponibili o che devono creare elementi di lavoro per le routine di deallocazione delle risorse. I notifier di segnale sono applicabili solo a determinate app che usano Win32 e COM per . Se non è necessario usare la preallocazione o la segnalazione nell'app, creare elementi di lavoro usando Windows.System.Threading.
Classi
PreallocatedWorkItem |
Un elemento di lavoro preallocato viene costruito prima dell'invio al pool di thread, assicurandosi che l'elemento di lavoro venga costruito in modo che possa essere inviato al pool di thread quando necessario. Ad esempio, è possibile creare un oggetto PreallocatedWorkItem nel caso in cui sia necessario per una routine di deallocazione delle risorse, poiché la routine di deallocazione delle risorse può essere chiamata in circostanze in cui non sarebbero disponibili risorse sufficienti per creare l'elemento di lavoro. Nota L'API ThreadPool è supportata per le app desktop e UWP. |
SignalNotifier |
Esegue un metodo quando viene segnalato un evento o un semaforo. È anche possibile specificare un valore di timeout, causando l'esecuzione del delegato dopo che è trascorso l'intervallo di tempo se l'evento denominato non si verifica (o se il semaforo non raggiunge uno stato segnalato). Nota L'API ThreadPool è supportata per le app desktop e UWP. |
Delegati
SignalHandler |
Rappresenta un metodo che viene chiamato quando viene segnalato l'evento associato o il semaforo di un indicatore di segnale oppure quando il valore di timeout facoltativo è trascorso (a qualsiasi occorrenza viene per primo). |