SuppressGCTransitionAttribute Sınıf

Tanım

Yönetilmeyen bir işlev çağrısı yapıldığında çöp toplama geçişinin atlanması gerektiğini gösterir.

public ref class SuppressGCTransitionAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)]
public sealed class SuppressGCTransitionAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method, Inherited=false)>]
type SuppressGCTransitionAttribute = class
    inherit Attribute
Public NotInheritable Class SuppressGCTransitionAttribute
Inherits Attribute
Devralma
SuppressGCTransitionAttribute
Öznitelikler

Açıklamalar

olmadan DllImportAttributebir yönteme uygulanırsa bu öznitelik yoksayılır.

Bu geçişin aşılması, geçişin maliyeti yönetilmeyen işlevin yürütme süresinden fazla olduğunda avantaj sağlayabilir. Ancak, bu geçişten kaçınmak, çalışma zamanının normal bir P/Invoke aracılığıyla sağladığı garantilerden bazılarını kaldırır. Yönetilmeyen bir işlev girmek için yönetilen çalışma zamanından çıkarken, GC'nin Kooperatif modundan Preemptive moduna geçmesi gerekir. Bu modlarla ilgili tüm ayrıntıları adresinde https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/clr-code-guide.md#2.1.8bulabilirsiniz. GC geçişini bastırmak gelişmiş bir senaryodur ve olası sonuçları tam olarak anlamadan yapılmamalıdır.

Bu sonuçlardan biri , Karma mod hata ayıklamaya yönelik bir etkidir. Karma mod hata ayıklama sırasında, bu öznitelikle işaretlenmiş bir P/Invoke içinde kesme noktalarına girmek veya kesme noktaları ayarlamak mümkün değildir. Geçici çözüm, yerel hata ayıklamaya geçmek ve yerel işlevde bir kesme noktası ayarlamaktır. Genel olarak, P/Invoke'da hata ayıklamak önemliyse( örneğin, yerel kodda adım adım ilerleyerek veya yerel koddan oluşan bir özel durumu tanılamak) bu özniteliğin kullanılması önerilmez.

Bu özniteliğin uygulandığı P/Invoke yöntemi aşağıdaki özelliklerin tümüne sahip olmalıdır:

  • Yerel işlev her zaman önemsiz bir süre boyunca (1 mikrosaniyeden az) yürütülür.
  • Native işlevi engelleme syscall gerçekleştirmez (örneğin, herhangi bir G/Ç türü).
  • Native işlevi çalışma zamanına geri çağrı yapmaz (örneğin, Ters P/Invoke).
  • Native işlevi özel durumlar oluşturmaz.
  • Yerel işlev kilitleri veya diğer eşzamanlılık temel öğelerini işlemez.

Bu özniteliğin geçersiz kullanımlarının sonuçları şunlardır:

  • GC açlığı.
  • Anında çalışma zamanı sonlandırma.
  • Veri bozulması.

Bu özniteliğin uygulanması P/Invoke dışarı aktarma işleminin JIT derlemesi yapılan çağırma yönteminin yan etkisi olarak daha önce bağlanmasına neden olabilir. EntryPointNotFoundException veya özniteliğin uygulanmadığından daha önce başka özel durumlar oluşturulabilir.

Oluşturucular

SuppressGCTransitionAttribute()

Örnek oluşturucu.

Özellikler

TypeId

Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır.

(Devralındığı yer: Attribute)

Yöntemler

Equals(Object)

Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür.

(Devralındığı yer: Attribute)
GetHashCode()

Bu örneğe ilişkin karma kodu döndürür.

(Devralındığı yer: Attribute)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
IsDefaultAttribute()

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir.

(Devralındığı yer: Attribute)
Match(Object)

Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür.

(Devralındığı yer: Attribute)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır