Megosztás a következőn keresztül:


ICorProfilerCallback5::ConditionalWeakTableElementReferences metódus

A közvetlen tagmező-hivatkozásokon és függőségeken keresztül ConditionalWeakTable azonosítja az e gyökerek által hivatkozott objektumok tranzitív lezárását.

Szintaxis

HRESULT ConditionalWeakTableElementReferences(
     [in]                     ULONG    cRootRefs,
     [in, size_is(cRootRefs)] ObjectID keyRefIds[],
     [in, size_is(cRootRefs)] ObjectID valueRefIds[],
     [in, size_is(cRootRefs)] GCHandleID rootIds[]
);

Paraméterek

cRootRefs
[in] A , valueRefIdsés rootIds tömbök elemeinek keyRefIdsszáma.

keyRefIds
[in] Objektumazonosítók tömbje, amelyek mindegyike tartalmazza a ObjectID függő leírópár elsődleges elemének azonosítóját.

valueRefIds
[in] Objektumazonosítók tömbje, amelyek mindegyike tartalmazza a ObjectID függő leírópár másodlagos elemének azonosítóját. (keyRefIds[i] életben marad valueRefIds[i] .)

rootIds
[in] Értéktömb GCHandleID , amely egy egész számra mutat, amely további információkat tartalmaz a szemétgyűjtés gyökeréről.

A metódus által ConditionalWeakTableElementReferences visszaadott értékek egyike ObjectID sem érvényes a visszahívás során, mivel előfordulhat, hogy a szemétgyűjtő az objektumok régiről új helyre való áthelyezésének folyamatában van. Ezért a profilkészítők nem kíséreljék meg az objektumok vizsgálatát hívás ConditionalWeakTableElementReferences közben. A( GarbageCollectionFinishedz) rendszerben az összes objektumot áthelyezték az új helyükre, és vizsgálatot végezhetnek.

Példa

Az alábbi példakód bemutatja, hogyan implementálhatja az ICorProfilerCallback5-öt , és hogyan használhatja ezt a módszert.

HRESULT Callback5Impl::ConditionalWeakTableElementReferences(
    ULONG      cRootRefs,
    ObjectID   keyRefIds[],
    ObjectID   valueRefIds[],
    GCHandleID rootIds[])
{
    printf("Callback5Impl::ConditionalWeakTableElementReferences called\n");
    for (unsigned int i = 0; i < cRootRefs; ++i)
    {
        // Save dependency to XML for later retrieval
        PersistDependencyToXml(rootIds[i], keyRefIds[i], valueRefIds[i]);
        // or store dependency to an internal map
        m_cwt_deps->add_dep(rootIds[i], keyRefIds[i], valueRefIds[i]);
        // or add arc to object graph
        m_obj_graph->add_arc(keyRefIds[i], valueRefIds[i], rootIds[i]);
    }
    return S_OK;
}

Megjegyzések

A .NET-keretrendszer 4.5-ös vagy újabb verzióinak profilkészítője implementálja az ICorProfilerCallback5 felületet, és rögzíti a ConditionalWeakTableElementReferences metódus által megadott függőségeket. ICorProfilerCallback5 A a bejegyzések által ConditionalWeakTable képviselt élő objektumok közötti függőségek teljes készletét biztosítja. Ezek a függőségek és az ICorProfilerCallback::ObjectReferences metódus által megadott tagmező-hivatkozások lehetővé teszik, hogy a felügyelt profilkészítők létrehozhassák az élő objektumok teljes objektumgráfját.

Követelmények

Platformok: Lásd: Rendszerkövetelmények.

Fejléc: CorProf.idl, CorProf.h

.NET-keretrendszer verziók: 4.5 óta elérhető

Lásd még