ICLRTask-Schnittstelle
Aktualisiert: November 2007
Stellt Methoden bereit, die es dem Host ermöglichen, die Common Language Runtime (CLR) anzufordern oder der CLR eine Benachrichtigung über die zugewiesene Aufgabe bereitzustellen.
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 ();
}
Methoden
Methode |
Beschreibung |
---|---|
Fordert, dass die CLR die von der aktuellen ICLRTask-Instanz dargestellte Aufgabe abbricht. |
|
Benachrichtigt die CLR, dass die der aktuellen ICLRTask-Instanz zugeordnete Aufgabe beendet wird und versucht, die Aufgabe erfolgreich herunterzufahren. |
|
Ruft statistische Informationen zu den von der Aufgabe verwendeten Speicherressourcen ab, wobei die Aufgabe von der aktuellen ICLRTask-Instanz dargestellt wird. |
|
Ruft die Anzahl der Sperren ab, mit denen die Aufgabe zu diesem Zeitpunkt belegt ist. |
|
Ruft einen Wert ab, der angibt, ob der Host eine hohe Priorität für die Neuplanung der durch die aktuelle ICLRTask-Instanz dargestellten Aufgabe zuweisen soll. |
|
Benachrichtigt die CLR, dass der Host eine Aufgabe abgeschlossen hat, und ermöglicht der CLR, die aktuelle ICLRTask-Instanz zur Darstellung einer weiteren Aufgabe zu verwenden. |
|
Bewirkt, dass die CLR die durch die aktuelle ICLRTask-Instanz dargestellte Aufgabe abbricht, ohne die Garantie geben zu können, dass Finalizer ausgeführt werden. |
|
Legt einen eindeutigen Bezeichner für die durch die aktuelle ICLRTask-Instanz dargestellte Aufgabe fest, der beim Debuggen verwendet wird. |
|
Benachrichtigt die CLR, dass sich die durch die aktuelle ICLRTask-Instanz dargestellte Aufgabe im betriebsbereiten Zustand befindet. |
|
Benachrichtigt die CLR, dass sich die durch die aktuelle ICLRTask-Instanz dargestellte Aufgabe nicht mehr im betriebsbereiten Zustand befindet. |
|
Fordert, dass die CLR CPU-Zeit für andere Aufgaben freigibt. Die CLR kann nicht garantieren, dass die Aufgabe in einen Zustand versetzt wird, in dem Verarbeitungszeit abgezogen werden kann. |
Hinweise
Ein ICLRTask ist die Darstellung einer Aufgabe für die CLR. Zu jedem beliebigen Zeitpunkt der Codeausführung kann eine Aufgabe als aktiv oder als auf Ausführung wartend beschrieben werden. Der Host ruft die ICLRTask::SwitchIn-Methode auf, um die CLR zu benachrichtigen, dass die von der aktuellen ICLRTask-Instanz dargestellte Aufgabe jetzt funktionsfähig ist. Nach dem Aufrufen von ICLRTask::SwitchIn kann der Host die Aufgabe für jeden Betriebssystemthread einplanen, außer in Fällen, in denen die Laufzeit Threadaffinität erfordert, wie bei Aufrufen der IHostTaskManager::BeginThreadAffinity-Methode und IHostTaskManager::EndThreadAffinity-Methode angegeben. Das Betriebssystem kann nach einiger Zeit die Aufgabe aus dem Thread entfernen und sie in einen inaktiven Zustand versetzen. Dies kann zum Beispiel dann der Fall sein, wenn die Aufgabe Synchronisierungsprimitive sperrt oder darauf wartet, dass E/A-Vorgänge abgeschlossen werden. Der Host ruft SwitchOut auf, um die CLR zu benachrichtigen, dass die von der aktuellen ICLRTask-Instanz dargestellte Aufgabe nicht mehr funktionsfähig ist.
Eine Aufgabe wird normalerweise am Ende der Codeausführung beendet. Zu diesem Zeitpunkt ruft der Host ICLRTask::ExitTask auf, um den zugeordneten ICLRTask zu zerstören. Aufgaben können jedoch auch wiederverwendet werden, indem ICLRTask::Reset aufgerufen wird, wodurch die ICLRTask-Instanz erneut verwendet werden kann. Dadurch wird der Aufwand für wiederholtes Erstellen und Zerstören von Instanzen vermieden.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: MSCorEE.idl
Bibliothek: als Ressource in MSCorEE.dll enthalten
.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
Siehe auch
Referenz
IHostTaskManager-Schnittstelle