ICLRTask インターフェイス
ホストで共通言語ランタイム (CLR) を要求できるようにするメソッド、または関連付けられたタスクについて CLR に通知するためのメソッドを提供します。
メソッド
メソッド | 説明 |
---|---|
Abort メソッド | 現在の ICLRTask インスタンスが表すタスクを CLR で中止するように要求します。 |
ExitTask メソッド | 現在の ICLRTask インスタンスに関連付けられているタスクが終了していることを CLR に通知し、タスクの正常なシャットダウンが試みられます。 |
GetMemStats メソッド | 現在の ICLRTask インスタンスで表されるタスクによるメモリ リソースの使用に関する統計情報を取得します。 |
LocksHeld メソッド | タスクで現在保持されているロックの数を取得します。 |
NeedsPriorityScheduling メソッド | 現在の ICLRTask インスタンスで表されるタスクを再スケジュールするために、優先順位の高いホストを割り当てる必要があるかどうかを示す値を取得します。 |
Reset メソッド | ホストでタスクを完了したことを CLR に通知し、CLR で現在の ICLRTask インスタンスを再利用して別のタスクを表すことができるようにします。 |
RudeAbort メソッド | ファイナライザーが実行されることを保証せずに、現在の ICLRTask インスタンスで表されるタスクを CLR ですぐに中止します。 |
SetTaskIdentifier メソッド | デバッグ時に使用するために、現在の ICLRTask インスタンスで表されるタスクの一意の識別子を設定します。 |
SwitchIn メソッド | 現在の ICLRTask インスタンスで表されるタスクが操作可能な状態であることを CLR に通知します。 |
SwitchOut メソッド | 現在の ICLRTask インスタンスで表されるタスクが操作可能な状態でなくなったことを CLR に通知します。 |
YieldTask メソッド | 他のタスクでプロセッサ時間を使用できるように CLR に要求します。 CLR では、タスクが処理時間を生成できる状態になるという保証はありません。 |
解説
ICLRTask
は、CLR のタスクを表したものです。 コードの実行中はいつでも、実行中または実行待機中のタスクを記述できます。 ホストから ICLRTask::SwitchIn
メソッドを呼び出して、現在の ICLRTask
インスタンスが表すタスクが操作可能な状態になったことを CLR に通知します。 ホストから ICLRTask::SwitchIn
を呼び出したら、任意のオペレーティング システム スレッドでタスクをスケジュールできます。ただし、IHostTaskManager::BeginThreadAffinity メソッドと IHostTaskManager::EndThreadAffinity メソッドの呼び出しで指定されているように、ランタイムにスレッド アフィニティが必要な場合は除きます。 しばらくすると、オペレーティング システムでタスクがスレッドから削除され、実行されていない状態になる可能性があります。 たとえば、タスクが同期プリミティブでブロックされた場合や、I/O 操作が完了するまで待機している場合に発生する可能性があります。 現在の ICLRTask
インスタンスで表されるタスクが操作可能な状態でなくなったことを CLR に通知する SwitchOut がホストから呼び出されます。
通常、タスクはコード実行の終了時に終了します。 その時点で、ホストから ICLRTask::ExitTask
が呼び出され、関連付けられている ICLRTask
が破棄されます。 ただし、ICLRTask::Reset
の呼び出しを使用してタスクをリサイクルすることもできます。これにより、ICLRTask
インスタンスを再度使用できます。 このアプローチでは、インスタンスを繰り返し作成および破棄するオーバーヘッドが回避されます。
必要条件
:「システム要件」を参照してください。
ヘッダー: MSCorEE.h
ライブラリ: MSCorEE.dll にリソースとして含まれます
.NET Framework のバージョン: 2.0 以降で使用可能
関連項目
.NET