Aracılığıyla paylaş


ICorProfilerCallback5::ConditionalWeakTableElementReferences Yöntemi

Hem doğrudan üye alan başvuruları hem de bağımlılıklar aracılığıyla ConditionalWeakTable bu kökler tarafından başvuruda bulunılan nesnelerin geçişli kapanışını tanımlar.

Sözdizimi

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

Parametreler

cRootRefs
[in] , valueRefIdsve rootIds dizilerindeki keyRefIdsöğelerin sayısı.

keyRefIds
[in] Her biri bağımlı tanıtıcı çiftindeki birincil öğe için öğesini içeren ObjectID nesne kimlikleri dizisi.

valueRefIds
[in] Her biri bağımlı tanıtıcı çiftindeki ikincil öğe için öğesini içeren ObjectID nesne kimlikleri dizisi. (keyRefIds[i] etkin tutar valueRefIds[i] .)

rootIds
[in] Çöp toplama kökü hakkında ek bilgiler içeren bir tamsayıya işaret eden değer dizisi GCHandleID .

ObjectID Atık toplayıcı nesneleri eski konumlardan yeni konumlara taşıma sürecinde olabileceğinden, yöntemi tarafından ConditionalWeakTableElementReferences döndürülen değerlerin hiçbiri geri çağırma sırasında geçerli değildir. Bu nedenle, profil oluşturucular bir ConditionalWeakTableElementReferences çağrı sırasında nesneleri incelemeye çalışmamalıdır. konumunda GarbageCollectionFinished, tüm nesneler yeni konumlarına taşındı ve inceleme yapılabilir.

Örnek

Aşağıdaki kod örneği , ICorProfilerCallback5 uygulamasını ve bu yöntemi kullanmayı gösterir.

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;
}

Açıklamalar

.NET Framework 4.5 veya sonraki sürümleri için profil oluşturucu, ICorProfilerCallback5 arabirimini uygular ve yöntemi tarafından ConditionalWeakTableElementReferences belirtilen bağımlılıkları kaydeder. ICorProfilerCallback5 , girdilerle temsil edilen ConditionalWeakTable canlı nesneler arasındaki bağımlılıkların tamamını sağlar. Bu bağımlılıklar ve ICorProfilerCallback::ObjectReferences yöntemi tarafından belirtilen üye alanı başvuruları, yönetilen profil oluşturucunun canlı nesnelerin tam nesne grafını oluşturmasını sağlar.

Gereksinimler

Platform: Bkz. Sistem Gereksinimleri.

Üstbilgi: CorProf.idl, CorProf.h

.NET Framework Sürümleri: 4.5 sürümünden itibaren kullanılabilir

Ayrıca bkz.