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