ThreadPool.UnsafeQueueUserWorkItem メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean) |
指定された作業項目オブジェクトをスレッド プールのキューに入れます。 |
UnsafeQueueUserWorkItem(WaitCallback, Object) |
指定したデリゲートをスレッド プールのキューに置きます。ただし、コール スタックをワーカー スレッドに反映しません。 |
UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean) |
実行用に Action<T> デリゲートで指定したメソッドをキューに入れ、そのメソッドで使用するデータを含んだオブジェクトを指定します。 メソッドは、スレッド プール スレッドが使用可能になったときに実行されます。 |
UnsafeQueueUserWorkItem(IThreadPoolWorkItem, Boolean)
指定された作業項目オブジェクトをスレッド プールのキューに入れます。
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 がスローされます。
例外
callback
が null
です。
作業項目は Task です。
作業項目をキューに配置できません。
注釈
スレッド プールは、作業項目の Execute() メソッドを呼び出します。 必要な場合は、その作業項目を伝達 ExecutionContext する必要があります。スレッド プールでは伝達されません。
適用対象
UnsafeQueueUserWorkItem(WaitCallback, Object)
指定したデリゲートをスレッド プールのキューに置きます。ただし、コール スタックをワーカー スレッドに反映しません。
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 がスローされます。
- 属性
例外
呼び出し元に、必要なアクセス許可がありません。
メモリが不足しています。
作業項目をキューに配置できません。
callBack
が null
です。
注釈
QueueUserWorkItemメソッドとは異なり、 UnsafeQueueUserWorkItem は呼び出し履歴をワーカー スレッドに伝達しません。 これにより、コードは呼び出し元のスタックを失い、セキュリティ特権を昇格できます。
注意事項
を使用すると UnsafeQueueUserWorkItem 、誤ってセキュリティ ホールが開く可能性があります。 コード アクセス セキュリティは、スタック上のすべての呼び出し元のアクセス許可に対するアクセス許可チェックに基づいて行います。 を使用して UnsafeQueueUserWorkItemスレッド プール スレッドで作業をキューに入れると、スレッド プール スレッドのスタックには、実際の呼び出し元のコンテキストがありません。 悪意のあるコードは、アクセス許可チェックを回避するためにこれを悪用する可能性があります。
こちらもご覧ください
適用対象
UnsafeQueueUserWorkItem<TState>(Action<TState>, TState, Boolean)
実行用に 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 がスローされます。
例外
callback
が null
です。
作業項目をキューに配置できません。
適用対象
.NET