ICLRTask2::BeginPreventAsyncAbort メソッド
現在のスレッドでスレッドを中止する、新しいスレッド中止要求を遅延させます。
HRESULT BeginPreventAsyncAbort();
戻り値
このメソッドは、次の特定の HRESULT と、メソッドの失敗を示す HRESULT エラーも返します。
HRESULT |
説明 |
---|---|
S_OK |
メソッドは正常に終了しました。 |
HOST_E_INVALIDOPERATION |
メソッドは、現在のスレッドではないスレッドで呼び出されました。 |
解説
このメソッドを呼び出すと、現在のスレッドのスレッド中止遅延カウンターが 1 つずつインクリメントされます。
BeginPreventAsyncAbort および ICLRTask2::EndPreventAsyncAbort の呼び出しは入れ子にすることができます。 カウンターがゼロよりも大きい値である間は、現在のスレッドのスレッド中止が遅延されます。 この呼び出しが EndPreventAsyncAbort メソッドの呼び出しと組み合わせて行われていない場合、スレッドの中止が現在のスレッドに配信できない状態に達する可能性があります。
それ自身で中止するスレッドでは、遅延は実行されません。
この特性で公開される機能は、仮想マシン (VM: Virtual Machine) によって内部で使用されます。 このメソッドの使用法を誤ると、未指定の動作が VM で実行される可能性があります。 たとえば、最初に BeginPreventAsyncAbort を呼び出さずに EndPreventAsyncAbort を呼び出すと、以前に VM がカウンターをインクリメントしていた場合は、カウンターがゼロに設定される可能性があります。 同様に、内部カウンターはオーバーフローに対してチェックされません。 ホストと VM の両方によってカウンターがインクリメントされたために整数制限を超えた場合、結果の動作は未指定になります。
必要条件
プラットフォーム: 「.NET Framework システム要件」を参照
ヘッダー : MSCorEE.h
ライブラリ: MSCorEE.dll にリソースとして格納されていること
.NET Framework のバージョン: 4
参照
参照
ICLRTask2::EndPreventAsyncAbort メソッド