Beispiel für die Stapelrahmenüberprüfung

Aktualisiert: November 2007

In diesem Beispiel wird veranschaulicht, wie Informationen über die Aufrufliste programmgesteuert an jedem Punkt innerhalb des ausführenden Codes abgerufen werden können. Der Stapelrahmen ermöglicht es Ihnen, die Abfolge der Prozeduren zu bestimmen, welche die Anwendung ausgeführt hat, bevor sie zur aktuellen Prozedur gelangt ist.

So erhalten Sie Beispiele und Anweisungen zu ihrer Installation

  • Führen Sie eine oder mehrere der folgenden Aktionen aus:

    • Klicken Sie im Menü Hilfe auf Samplings.

      In der Infodatei befinden sich Informationen zu Beispielen.

    • Gehen Sie zur Website mit Visual Studio 2008-Beispielen. Hier stehen die aktuellsten Versionen der Beispiele bereit.

    • Suchen Sie Beispiele auf dem Computer, auf dem Visual Studio installiert wurde. Standardmäßig werden Beispiele und eine Infodatei unter Laufwerk:\Programme\Microsoft Visual Studio 9.0\Beispiele\lcid installiert. Für die Express-Version von Visual Studio werden alle Beispiele online bereitgestellt.

Weitere Informationen finden Sie unter Suchen von Beispieldateien.

Sicherheitshinweis:

Dieser Beispielcode soll lediglich ein Konzept veranschaulichen. Es wird nur der für das jeweilige Konzept relevante Code dargestellt. Möglicherweise erfüllt dieser nicht die Sicherheitsanforderungen für eine bestimmte Umgebung, und er sollte nicht genau wie dargestellt verwendet werden. Wir empfehlen, Sicherheits- und Fehlerbehandlungscode hinzuzufügen, um Ihre Projekte sicherer und stabiler zu machen. Microsoft stellt diesen Beispielcode "wie besehen" und ohne Garantien zur Verfügung.

So führen Sie dieses Beispiel aus

  • Drücken Sie F5.

Veranschaulicht

.NET Framework stellt die Funktionalität als Bestandteil der StackFrame-Klasse bereit. In diesem Beispiel werden zwei weitere Klassen dargestellt: StackTrace und MethodInfo. Der parameterlose Konstruktor von StackTrace gibt einen vollständigen Satz von StackFrame-Objekten zurück, die Informationen ab dem Zeitpunkt des Anwendungsstarts bereitstellen. Sie können auch den StackTrace-Konstruktor verwenden, an den eine Exception-Instanz übergeben wird. Dieser Konstruktor gibt Stapelüberwachungsinformationen an den Code zurück, der die Ausnahme ausgelöst hat.

Der Ereignishandler für die Schaltfläche Test Procedure Stack enthält Code zum Aufruf verschiedener Methoden, woraus sich ein mehrere Ebenen umfassender Stapel ergibt. Wenn der Benutzer auf die Schaltfläche Test Procedure Stack klickt, wird ProcA aufgerufen, die wiederum ProcB aufruft. ProcB ruft die GetFullStackFrameInfo-Prozedur auf und übergibt ihr ein neues StackTrace-Objekt:

GetFullStackFrameInfo(New StackTrace()) 

Der Code in der GetFullStackFrameInfo-Prozedur verwendet die FrameCount-Eigenschaft des StackTrace-Objekts, um die Gesamtzahl von Stapelrahmen abzurufen. Dabei wird ausgehend von der aktuellen Prozedur zurück zum ersten Prozeduraufruf gezählt. Die Prozedur fügt dem Listenfeld im Beispiel dann Informationen zu jedem Stapelrahmen hinzu, indem die GetFrame-Methode aufgerufen wird, um ein indiziertes Stapelrahmenobjekt abzurufen.

Die GetStackFrameInfo-Prozedur ruft GetFrame für das StackFrame-Objekt auf, das vom Code gesendet wurde. Anschließend ruft diese die Eigenschaften des MethodInfo-Objekts ab, um im Listenfeld Informationen zur Prozedur anzuzeigen.

Der Ereignishandler für die Schaltfläche Test Exception Handling generiert einen Fehler in einer tieferen Ebene des Stapels. Der Code löst eine Ausnahme aus, und diese Ausnahme wird an den Konstruktor für das StackFrame-Objekt übergeben.

Siehe auch

Referenz

System.Diagnostics

StackFrame

System.Reflection

MethodInfo

FrameCount