ThreadPool.UnsafeQueueUserWorkItem Methode

Definition

Überlädt

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Fügt das angegebene Arbeitselementobjekt in die Warteschlange des Threadpools ein.

UnsafeQueueUserWorkItem(WaitCallback, Object)

Stellt den angegebenen Delegaten in eine Warteschlange für den Threadpool, leitet die Aufrufliste jedoch nicht an den Arbeitsthread weiter.

UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean)

Fügt der Warteschlange eine Methode hinzu, die von einem Action<T>-Delegat zur Ausführung angegeben wurde, und gibt ein Objekt an, das die von der Methode zu verwendenden Daten enthält. Die Methode wird ausgeführt, wenn ein Thread des Threadpools verfügbar wird.

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

Quelle:
ThreadPoolWorkQueue.cs
Quelle:
ThreadPoolWorkQueue.cs
Quelle:
ThreadPoolWorkQueue.cs

Fügt das angegebene Arbeitselementobjekt in die Warteschlange des Threadpools ein.

public:
 static bool UnsafeQueueUserWorkItem(System::Threading::IThreadPoolWorkItem ^ callBack, bool preferLocal);
public static bool UnsafeQueueUserWorkItem (System.Threading.IThreadPoolWorkItem callBack, bool preferLocal);
static member UnsafeQueueUserWorkItem : System.Threading.IThreadPoolWorkItem * bool -> bool
Public Shared Function UnsafeQueueUserWorkItem (callBack As IThreadPoolWorkItem, preferLocal As Boolean) As Boolean

Parameter

callBack
IThreadPoolWorkItem

Das aufzurufende Arbeitselement, wenn ein Thread im Threadpool das Arbeitselement aufruft.

preferLocal
Boolean

Mit true fügen Sie das Arbeitselement in eine Warteschlange in der Nähe des aktuellen Threads ein; false für das Einfügen des Arbeitselements in die vom Threadpool freigegebene Warteschlange.

Gibt zurück

true, wenn die Methode erfolgreich ist. OutOfMemoryException wird ausgelöst, wenn die Arbeitsaufgabe nicht in die Warteschlange gestellt werden konnte.

Ausnahmen

callback ist null.

Das Arbeitselement ist eine Task-Klasse.

Das Arbeitselement konnte nicht in die Warteschlange eingereiht werden.

Hinweise

Der Threadpool ruft die -Methode des Arbeitselements Execute() auf. Es liegt in der Verantwortung dieses Arbeitselements, bei Bedarf weiterzuverbreiten ExecutionContext . Der Threadpool wird dies nicht tun.

Gilt für:

UnsafeQueueUserWorkItem(WaitCallback, Object)

Quelle:
ThreadPoolWorkQueue.cs
Quelle:
ThreadPoolWorkQueue.cs
Quelle:
ThreadPoolWorkQueue.cs

Stellt den angegebenen Delegaten in eine Warteschlange für den Threadpool, leitet die Aufrufliste jedoch nicht an den Arbeitsthread weiter.

public:
 static bool UnsafeQueueUserWorkItem(System::Threading::WaitCallback ^ callBack, System::Object ^ state);
public static bool UnsafeQueueUserWorkItem (System.Threading.WaitCallback callBack, object? state);
public static bool UnsafeQueueUserWorkItem (System.Threading.WaitCallback callBack, object state);
[System.Security.SecurityCritical]
public static bool UnsafeQueueUserWorkItem (System.Threading.WaitCallback callBack, object state);
static member UnsafeQueueUserWorkItem : System.Threading.WaitCallback * obj -> bool
[<System.Security.SecurityCritical>]
static member UnsafeQueueUserWorkItem : System.Threading.WaitCallback * obj -> bool
Public Shared Function UnsafeQueueUserWorkItem (callBack As WaitCallback, state As Object) As Boolean

Parameter

callBack
WaitCallback

Ein WaitCallback, der den Delegaten darstellt, der aufgerufen werden soll, wenn ein Thread im Threadpool die Arbeitsaufgabe aufnimmt.

state
Object

Das Objekt, das an den Delegaten übergeben wird, wenn die Bearbeitung aus dem Threadpool erfolgt.

Gibt zurück

true, wenn die Methode erfolgreich ist. OutOfMemoryException wird ausgelöst, wenn die Arbeitsaufgabe nicht in die Warteschlange gestellt werden konnte.

Attribute

Ausnahmen

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Es war nicht genügend Arbeitsspeicher vorhanden.

Das Arbeitselement konnte nicht in die Warteschlange eingereiht werden.

callBack ist null.

Hinweise

Im Gegensatz zur QueueUserWorkItem -Methode UnsafeQueueUserWorkItem gibt den aufrufenden Stapel nicht an den Workerthread weiter. Dies ermöglicht es Code, den aufrufenden Stapel zu verlieren und dadurch seine Sicherheitsberechtigungen zu erhöhen.

Achtung

Die Verwendung UnsafeQueueUserWorkItem von könnte versehentlich eine Sicherheitslücke öffnen. Die Codezugriffssicherheit basiert bei den Berechtigungsprüfungen auf den Berechtigungen aller Aufrufer im Stapel. Wenn Die Arbeit in einer Warteschlange für einen Threadpoolthread mit UnsafeQueueUserWorkItemin die Warteschlange gestellt wird, verfügt der Stapel des Threadpoolthreads nicht über den Kontext der tatsächlichen Aufrufer. Böswilliger Code kann dies ausnutzen, um Berechtigungsprüfungen zu vermeiden.

Weitere Informationen

Gilt für:

UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean)

Quelle:
ThreadPoolWorkQueue.cs
Quelle:
ThreadPoolWorkQueue.cs
Quelle:
ThreadPoolWorkQueue.cs

Fügt der Warteschlange eine Methode hinzu, die von einem Action<T>-Delegat zur Ausführung angegeben wurde, und gibt ein Objekt an, das die von der Methode zu verwendenden Daten enthält. Die Methode wird ausgeführt, wenn ein Thread des Threadpools verfügbar wird.

public:
generic <typename TState>
 static bool UnsafeQueueUserWorkItem(Action<TState> ^ callBack, TState state, bool preferLocal);
public static bool UnsafeQueueUserWorkItem<TState> (Action<TState> callBack, TState state, bool preferLocal);
static member UnsafeQueueUserWorkItem : Action<'State> * 'State * bool -> bool
Public Shared Function UnsafeQueueUserWorkItem(Of TState) (callBack As Action(Of TState), state As TState, preferLocal As Boolean) As Boolean

Typparameter

TState

Der Typ der Elemente von state.

Parameter

callBack
Action<TState>

Ein Delegat, der die auszuführende Methode darstellt.

state
TState

Ein Objekt, das die von der Methode zu verwendenden Daten enthält.

preferLocal
Boolean

Mit true fügen Sie das Arbeitselement in eine Warteschlange in der Nähe des aktuellen Threads ein; false für das Einfügen des Arbeitselements in die vom Threadpool freigegebene Warteschlange.

Gibt zurück

true, wenn die Methode erfolgreich in die Warteschlange eingereiht wurde. NotSupportedException wird ausgelöst, wenn das Arbeitselement nicht in die Warteschlange eingereiht werden konnte.

Ausnahmen

callback ist null.

Das Arbeitselement konnte nicht in die Warteschlange eingereiht werden.

Gilt für: