SuppressGCTransitionAttribute Klasse

Definition

Gibt an, dass ein Garbage-Collection-Übergang übersprungen werden soll, wenn ein nicht verwalteter Funktionsaufruf erfolgt.Indicates that a garbage collection transition should be skipped when an unmanaged function call is made.

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
Vererbung
SuppressGCTransitionAttribute
Attribute

Hinweise

Dieses Attribut wird ignoriert, wenn es ohne das auf eine Methode angewendet wird DllImportAttribute .This attribute is ignored if applied to a method without the DllImportAttribute.

Diese Umstellung kann zu Vorteilen führen, wenn die Kosten des Übergangs die Ausführungszeit der nicht verwalteten Funktion überschreiten.Forgoing this transition can yield benefits when the cost of the transition is more than the execution time of the unmanaged function. Das vermeiden dieses Übergangs entfernt jedoch einige der Garantien, die die Laufzeit durch einen normalen P/Aufruf bereitstellt.However, avoiding this transition removes some of the guarantees the runtime provides through a normal P/Invoke. Beim Beenden der verwalteten Laufzeit für die Eingabe einer nicht verwalteten Funktion muss der GC vom kooperativen Modus in den präemptiven Modus übergehen.When exiting the managed runtime to enter an unmanaged function, the GC must transition from Cooperative mode into Preemptive mode. Ausführliche Informationen zu diesen Modi finden Sie unter https://github.com/dotnet/runtime/blob/master/docs/coding-guidelines/clr-code-guide.md#2.1.8 .Full details on these modes can be found at https://github.com/dotnet/runtime/blob/master/docs/coding-guidelines/clr-code-guide.md#2.1.8. Das Unterdrücken des GC-Übergangs ist ein erweitertes Szenario und sollte nicht ohne vollständiges Verständnis potenzieller Konsequenzen erreicht werden.Suppressing the GC transition is an advanced scenario and should not be done without fully understanding potential consequences.

Eine dieser Konsequenzen wirkt sich auf das Debuggen im gemischten Modusaus.One of these consequences is an impact to Mixed-mode debugging. Während des Debuggens im gemischten Modus ist es nicht möglich, in einem P/-Aufruf, der mit diesem Attribut markiert wurde, einen Einzelschritt durchzuführen oder Haltepunkte festzulegen.During Mixed-mode debugging, it is not possible to step into or set breakpoints in a P/Invoke that has been marked with this attribute. Eine Problem Umgehung besteht darin, zu nativem Debugging zu wechseln und in der systemeigenen Funktion einen Haltepunkt festzulegen.A workaround is to switch to native debugging and set a breakpoint in the native function. Im Allgemeinen ist die Verwendung dieses Attributs nicht empfehlenswert, wenn das Debuggen des P/Aufrufs wichtig ist, z. b. durchlaufen des systemeigenen Codes oder diagnostizieren einer Ausnahme, die vom systemeigenen Code ausgelöst wird.In general, usage of this attribute is not recommended if debugging the P/Invoke is important, for example, stepping through the native code or diagnosing an exception thrown from the native code.

Die P/Aufruf-Methode, auf die dieses Attribut angewendet wird, muss über die folgenden Eigenschaften verfügen:The P/Invoke method that this attribute is applied to must have all of the following properties:

  • Die native Funktion wird immer für einen trivialen Zeitraum (weniger als eine Mikrosekunde) ausgeführt.Native function always executes for a trivial amount of time (less than 1 microsecond).
  • Die native Funktion führt keine blockierende syscall-Funktion aus (z. b. beliebige e/a-Typen).Native function does not perform a blocking syscall (for example, any type of I/O).
  • Die native Funktion ruft keinen Rückruf für die Laufzeit auf (z. b. Reverse-P/aufrufen).Native function does not call back into the runtime (for example, Reverse P/Invoke).
  • Die native Funktion löst keine Ausnahmen aus.Native function does not throw exceptions.
  • Die native Funktion bearbeitet keine Sperren oder anderen Parallelitäts primitiven.Native function does not manipulate locks or other concurrency primitives.

Zu den Folgen der ungültigen Verwendung dieses Attributs gehören:Consequences of invalid uses of this attribute include:

  • GC-Hunger.GC starvation.
  • Sofortiges Beenden der Laufzeit.Immediate runtime termination.
  • Beschädigung von Daten.Data corruption.

Konstruktoren

SuppressGCTransitionAttribute()

Instanzenkonstruktor.Instance constructor.

Eigenschaften

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.When implemented in a derived class, gets a unique identifier for this Attribute.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.Returns a value that indicates whether this instance is equal to a specified object.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.Returns the hash code for this instance.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.Maps a set of names to a corresponding set of dispatch identifiers.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.Provides access to properties and methods exposed by an object.

(Geerbt von Attribute)

Gilt für: