ThreadPool.UnsafeQueueUserWorkItem メソッド

定義

オーバーロード

名前 説明
UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

指定した作業項目オブジェクトをスレッド プールにキューに格納します。

UnsafeQueueUserWorkItem(WaitCallback, Object)

指定したデリゲートをスレッド プールにキューに入れますが、呼び出し履歴はワーカー スレッドに伝達されません。

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

Action<T> デリゲートによって指定されたメソッドをキューに入れ、メソッドで使用するデータを含むオブジェクトを指定します。 このメソッドは、スレッド プール スレッドが使用可能になったときに実行されます。

UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)

ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs

指定した作業項目オブジェクトをスレッド プールにキューに格納します。

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

パラメーター

callBack
IThreadPoolWorkItem

スレッド プール内のスレッドが作業項目を選択したときに呼び出す作業項目。

preferLocal
Boolean

true 現在のスレッドに近いキュー内の作業項目をキューに入れます。作業項目をスレッド プールの共有キューにキューに入れます false

返品

true メソッドが成功した場合。作業項目をキューに登録できなかった場合、 OutOfMemoryException がスローされます。

例外

callBacknullです。

作業項目は Taskです。

作業項目をキューに登録できませんでした。

注釈

スレッド プールは、作業項目の Execute() メソッドを呼び出します。 必要に応じて ExecutionContext を伝達するのは、その作業項目の役割です。スレッド プールでは伝達されません。

適用対象

UnsafeQueueUserWorkItem(WaitCallback, Object)

ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs

指定したデリゲートをスレッド プールにキューに入れますが、呼び出し履歴はワーカー スレッドに伝達されません。

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

パラメーター

callBack
WaitCallback

スレッド プール内のスレッドが作業項目を選択したときに呼び出すデリゲートを表す WaitCallback

state
Object

スレッド プールから処理されるときにデリゲートに渡されるオブジェクト。

返品

true メソッドが成功した場合。作業項目をキューに登録できなかった場合、 OutOfMemoryException がスローされます。

属性

例外

呼び出し元に必要なアクセス許可がありません。

メモリ不足状態が発生しました。

作業項目をキューに登録できませんでした。

callBacknullです。

注釈

QueueUserWorkItem メソッドとは異なり、UnsafeQueueUserWorkItemは呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元スタックを失い、セキュリティ特権を昇格できます。

Caution

UnsafeQueueUserWorkItemを使用すると、誤ってセキュリティ ホールが開く可能性があります。 コード アクセス セキュリティは、スタック上のすべての呼び出し元のアクセス許可に対するアクセス許可チェックに基づいて行います。 UnsafeQueueUserWorkItemを使用してスレッド プール スレッドで作業がキューに登録されている場合、スレッド プール スレッドのスタックには、実際の呼び出し元のコンテキストはありません。 悪意のあるコードは、アクセス許可チェックを回避するためにこれを利用できる可能性があります。

こちらもご覧ください

適用対象

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

ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs
ソース:
ThreadPoolWorkQueue.cs

Action<T> デリゲートによって指定されたメソッドをキューに入れ、メソッドで使用するデータを含むオブジェクトを指定します。 このメソッドは、スレッド プール スレッドが使用可能になったときに実行されます。

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

型パラメーター

TState

stateの要素の型。

パラメーター

callBack
Action<TState>

実行するメソッドを表すデリゲート。

state
TState

メソッドによって使用されるデータを含むオブジェクト。

preferLocal
Boolean

true 現在のスレッドに近いキュー内の作業項目をキューに入れます。作業項目をスレッド プールの共有キューにキューに入れます false

返品

true メソッドが正常にキューに入った場合。作業項目をキューに登録できなかった場合、 NotSupportedException がスローされます。

例外

callBacknullです。

作業項目をキューに登録できませんでした。

適用対象