次の方法で共有


ICLRTask

更新 : 2007 年 11 月

ホストが共通言語ランタイム (CLR: Common Language Runtime) に対して要求を出したり、関連付けられているタスクについて CLR に通知を出したりできるようにするメソッドを提供します。

interface ICLRTask : IUnknown {
    HRESULT Abort ();
    HRESULT ExitTask ();
    HRESULT GetMemStats (
        [out] COR_GC_THREAD_STATS *pMemUsage
    );
    HRESULT LocksHeld (
        [out] SIZE_T *pLockCount
    );
    HRESULT NeedsPriorityScheduling (
        [out] BOOL *pbNeedsPriorityScheduling
    );
    HRESULT Reset (
        [in] BOOL fFull
    );
    HRESULT RudeAbort ();
    HRESULT SetTaskIdentifier (
        [in] DWORD asked
    );
    HRESULT SwitchIn (
        [in] HANDLE threadHandle
    );
    HRESULT SwitchOut ();
    HRESULT YieldTask ();
}

メソッド

メソッド

説明

ICLRTask::Abort メソッド

現在の ICLRTask インスタンスが表すタスクを中止するように、CLR に要求します。

ICLRTask::ExitTask メソッド

現在の ICLRTask インスタンスに関連付けられているタスクが終了中であることを CLR に通知し、タスクを正常に終了しようとします。

ICLRTask::GetMemStats メソッド

現在の ICLRTask インスタンスが表すタスクによるメモリ リソースの使用状況の統計情報を取得します。

ICLRTask::LocksHeld メソッド

現在タスクで保持しているロックの数を取得します。

ICLRTask::NeedsPriorityScheduling メソッド

現在の ICLRTask インスタンスが表すタスクの再スケジュールについて、ホストが高い優先順位を設定する必要があるかどうかを示す値を取得します。

ICLRTask::Reset メソッド

ホストがタスクを完了したことを CLR に通知し、CLR が現在の ICLRTask インスタンスを再利用して別のタスクを表現できるようにします。

ICLRTask::RudeAbort メソッド

CLR は、ファイナライザが実行されるのを待機せずに、現在の ICLRTask インスタンスが表すタスクをすぐに中止します。

ICLRTask::SetTaskIdentifier メソッド

現在の ICLRTask インスタンスが表すタスクに、デバッグ用に一意の ID を設定します。

ICLRTask::SwitchIn メソッド

現在の ICLRTask インスタンスが表すタスクが実行可能な状態にあることを CLR に通知します。

ICLRTask::SwitchOut メソッド

現在の ICLRTask インスタンスが表すタスクが実行可能な状態ではなくなったことを、CLR に通知します。

ICLRTask::YieldTask メソッド

他のタスクにプロセッサ時間を与えるように CLR に要求します。CLR では、タスクがプロセッサ時間を得ることのできる状態になるかどうかは保証されません。

解説

ICLRTask は、CLR のタスクの表現です。コードの実行中は、タスクの状態は実行中または実行待機中になります。ホストは、ICLRTask::SwitchIn メソッドを呼び出して、現在の ICLRTask インスタンスが表しているタスクが実行可能な状態になっていることを CLR に通知します。ICLRTask::SwitchIn を呼び出した後、ホストは任意のオペレーティング システム スレッドに対してタスクをスケジュールできます。ただし、IHostTaskManager::BeginThreadAffinity メソッドおよび IHostTaskManager::EndThreadAffinity メソッドの呼び出しで指定されるスレッド アフィニティをランタイムが要求する場合を除きます。しばらくして、オペレーティング システムがタスクをスレッドから削除し、タスクを非実行状態にすることがあります。たとえば、タスクが同期プリミティブをブロックしたり、I/O 操作の完了を待機したりする場合です。ホストは、SwitchOut を呼び出して、現在の ICLRTask インスタンスが表しているタスクが実行可能な状態ではなくなったことを CLR に通知します。

通常、タスクはコードの実行の最後に終了します。このとき、ホストは ICLRTask::ExitTask を呼び出して、関連付けられている ICLRTask を破棄します。ただし、ICLRTask::Reset への呼び出しを使用して、タスクをリサイクルすることもできます。この場合は、ICLRTask インスタンスを再利用できます。この方法を使用すると、インスタンスの作成と破棄を繰り返さずにすみます。

必要条件

プラットフォーム : 「.NET Framework システム要件」を参照

ヘッダー : MSCorEE.idl

ライブラリ : MSCorEE.dll にリソースとして格納されていること

.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0

参照

参照

ICLRTaskManager

IHostTask

IHostTaskManager

その他の技術情報

ホスト インターフェイス