Condividi tramite


Metodo ICorProfilerInfo13::CreateHandle

Crea un handle che esegue il wrapping di un oggetto specificato.

Sintassi

    HRESULT CreateHandle(
                [in] ObjectID            object,
                [in] COR_PRF_HANDLE_TYPE type,
                [out] ObjectHandleID*    pHandle);

Parametri

object
[in] Riferimento all'oggetto di cui eseguire il wrapping con un handle.

type
[in] Tipo di handle da creare.

pHandle
[out] Puntatore fornito dal chiamante che punterà all'handle creato per eseguire il wrapping dell'oggetto object specificato.

Osservazioni:

Di seguito sono riportati gli utilizzi previsti a seconda del valore COR_PRF_HANDLE_TYPE specificato:

  • COR_PRF_HANDLE_TYPE_WEAK: monitora se un oggetto rimane in memoria nel tempo. Se l'oggetto di cui è stato eseguito il wrapping è stato raccolto, ICorProfilerInfo13::GetObjectIDFromHandle restituisce un valore Null ObjectID.
  • COR_PRF_HANDLE_TYPE_STRONG: impone che un oggetto sopravviva alle operazioni di Garbage Collection anche se nessun altro oggetto vi fa riferimento.
  • COR_PRF_HANDLE_TYPE_PINNED: uguale a un handle sicuro, ma garantisce anche che l'oggetto rimanga allo stesso indirizzo in memoria durante le operazioni di Garbage Collection.

Per assicurarsi che il riferimento object sia valido, questo metodo deve essere chiamato da un metodo ICorProfilerCallback, ad esempio ICorProfilerCallback::ObjectAllocated. Non è possibile chiamare CreateHandle da un listener asincrono EventPipe. L'oggetto ricevuto tramite un payload dell'evento potrebbe essere stato eliminato o spostato in memoria se si è verificata un'operazione di Garbage Collection tra il momento in cui è stato generato l'evento e il momento in cui è stato ricevuto.

Non dimenticare di chiamare ICorProfilerInfo13::DestroyHandle dopo che un handle creato non è più necessario. È consigliabile avere meno di 4096 handle allocati contemporaneamente per evitare di influire negativamente sulle prestazioni del Garbage Collector.

Requisiti

Piattaforme: vedere Sistemi operativi supportati da .NET.

Intestazione: CorProf.idl, CorProf.h

Versioni .NET: disponibile a partire da .NET 7.0

Vedi anche