次の方法で共有


ICLRTask2 インターフェイス

ICLRTask インターフェイスのすべての機能が用意されています。また、現在のスレッドでスレッドの中止を遅延させることができるメソッドが用意されています。

メソッド

メソッド 説明
BeginPreventAsyncAbort メソッド 現在のスレッドの新しいスレッド中止要求を遅延します。
EndPreventAsyncAbort メソッド 新規または保留中のスレッド中止要求を許可し、現在のスレッドでスレッドを中止します。

解説

ICLRTask2 インターフェイスは ICLRTask インターフェイスを継承し、ホストによってスレッドの中止を遅延させ、失敗してはならないコードの領域を保護できるようにするメソッドを追加します。 BeginPreventAsyncAbort を呼び出すと、現在のスレッドのスレッド中止遅延カウンターが増加し、EndPreventAsyncAbort を呼び出すと、そのカウンターが減少します。 BeginPreventAsyncAbort および EndPreventAsyncAbort への呼び出しは入れ子にすることができます。 カウンターが 0 より大きい限り、現在のスレッドのスレッド中止は遅延されます。

BeginPreventAsyncAbortEndPreventAsyncAbort の呼び出しがペアになっていない場合、現在のスレッドにスレッド中止を配信できない状態になる可能性があります。

遅延は、それ自体を中止するスレッドには適用されません。

この機能によって公開されている機能は、仮想マシン (VM) によって内部的に使用されます。 これらのメソッドを誤用すると、VM で不特定の動作が発生する可能性があります。 たとえば、最初に BeginPreventAsyncAbort を呼び出さずに EndPreventAsyncAbort を呼び出すと、VM で以前に増分したカウンターが 0 に設定される可能性があります。 同様に、内部カウンターのオーバーフローはチェックされません。 ホストと VM の両方によって増分されたことにより整数の制限を超えた場合、結果として得られる動作は不特定です。

ICLRTask から継承されたメンバーと、このインターフェイスの他の用途については、「ICLRTask インターフェイス」を参照してください。

必要条件

:システム要件」を参照してください。

ヘッダー: MSCorEE.h

ライブラリ: MSCorEE.dll にリソースとして含まれます

.NET Framework のバージョン: 4 以降で使用可能

関連項目