ICLRSyncManager::GetMonitorOwner-Methode
Ruft die IHostTask-Instanz ab, der der durch das angegebene Cookie identifizierte Monitor gehört.
Syntax
HRESULT GetMonitorOwner (
[in] SIZE_T cookie,
[out] IHostTask *ppOwnerHostTask
);
Parameter
cookie
[in] Das dem Monitor zugeordnete Cookie.
ppOwnerHostTask
[out] Ein Zeiger auf die IHostTask
, die derzeit Besitzer des Monitors ist, oder null, wenn keine Aufgabe Besitzer ist.
Rückgabewert
HRESULT | BESCHREIBUNG |
---|---|
S_OK | GetMonitorOwner wurde erfolgreich zurückgegeben. |
HOST_E_CLRNOTAVAILABLE | Die CLR wurde nicht in einen Prozess geladen, oder die CLR befindet sich in einem Zustand, in dem sie keinen verwalteten Code ausführen oder den Aufruf nicht erfolgreich verarbeiten kann. |
HOST_E_TIMEOUT | Timeout des Aufrufs. |
HOST_E_NOT_OWNER | Der Aufrufer besitzt die Sperre nicht. |
HOST_E_ABANDONED | Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber darauf gewartet hat. |
E_FAIL | Es ist ein unbekannter katastrophaler Fehler aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR nicht mehr innerhalb des Prozesses verwendet werden. Nachfolgende Aufrufe von Hostingmethoden geben HOST_E_CLRNOTAVAILABLE zurück. |
Bemerkungen
Der Host ruft GetMonitorOwner
normalerweise im Rahmen eines Mechanismus zur Erkennung von Deadlocks auf. Das Cookie wird einem Monitor zugeordnet, wenn dieser mithilfe eines Aufrufs von IHostSyncManager::CreateMonitorEvent erstellt wird.
Hinweis
Ein Aufruf zur Freigabe des Ereignisses, das dem Monitor zugrunde liegt, kann blockieren, wird aber nicht zum Deadlock führen, wenn ein Aufruf dieser Methode gerade für das diesem Monitor zugeordnete Cookie ausgeführt wird. Andere Aufgaben können ebenfalls blockiert werden, wenn sie versuchen, diesen Monitor zu erfassen.
GetMonitorOwner
kehrt immer sofort zurück und kann jederzeit nach einem Aufruf von CreateMonitorEvent
aufgerufen werden. Der Host muss nicht warten, bis eine Aufgabe auf das Ereignis wartet.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: MSCorEE.h
Bibliothek: Als Ressource in „MsCorEE.dll“ enthalten.
.NET Framework-Versionen: Seit 2.0 verfügbar.