StackTrace Konstruktorok

Definíció

Inicializálja a StackTrace osztály új példányát.

Túlterhelések

Name Description
StackTrace()

Inicializálja az StackTrace osztály új példányát a hívó keretéből.

StackTrace(Boolean)

Inicializálja az osztály új példányát a StackTrace hívó keretéből, és opcionálisan rögzíti a forrásadatokat.

StackTrace(IEnumerable<StackFrame>)

Objektumkészletből StackFrame készít veremkövetőt.

StackTrace(StackFrame)

Inicializálja az StackTrace osztály egy új példányát, amely egyetlen keretet tartalmaz.

StackTrace(Exception)

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával.

StackTrace(Int32)

Inicializálja az StackTrace osztály új példányát a hívó keretéből, kihagyva a megadott számú keretet.

StackTrace(Exception, Int32)

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával, és kihagyja a megadott számú keretet.

StackTrace(Int32, Boolean)

Inicializálja az osztály új példányát a StackTrace hívó keretéből, kihagyja a megadott számú keretet, és opcionálisan rögzíti a forrásadatokat.

StackTrace(Thread, Boolean)
Elavult.

Inicializálja az StackTrace osztály egy új példányát egy adott szálhoz, opcionálisan rögzíti a forrásadatokat.

Ne használja ezt a konstruktor túlterhelést.

StackTrace(Exception, Int32, Boolean)

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával, kihagyja a megadott számú keretet, és opcionálisan rögzíti a forrásadatokat.

StackTrace(Exception, Boolean)

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával, és opcionálisan rögzíti a forrásadatokat.

StackTrace()

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az StackTrace osztály új példányát a hívó keretéből.

public:
 StackTrace();
public StackTrace();
Public Sub New ()

Példák

Az alábbi példakód az első és az utolsó függvényhívást jeleníti meg egy veremkövetésben.

public void Level5Method()
{
   try
   {
      ClassLevel6 nestedClass = new ClassLevel6();
      nestedClass.Level6Method();
   }
   catch (Exception e)
   {
      Console.WriteLine(" Level5Method exception handler");

      StackTrace st = new StackTrace();

      // Display the most recent function call.
      StackFrame sf = st.GetFrame(0);
      Console.WriteLine();
      Console.WriteLine("  Exception in method: ");
      Console.WriteLine("      {0}", sf.GetMethod());

      if (st.FrameCount >1)
      {
         // Display the highest-level function call
         // in the trace.
         sf = st.GetFrame(st.FrameCount-1);
         Console.WriteLine("  Original function call at top of call stack):");
         Console.WriteLine("      {0}", sf.GetMethod());
      }

      Console.WriteLine();
      Console.WriteLine("   ... throwing exception to next level ...");
      Console.WriteLine("-------------------------------------------------\n");
      throw e;
   }
}
Public Sub Level5Method()
   Try
      Dim nestedClass As New ClassLevel6()
      nestedClass.Level6Method()
   Catch e As Exception
      Console.WriteLine(" Level5Method exception handler")
      
      Dim st As New StackTrace()
      
      ' Display the most recent function call.
      Dim sf As StackFrame = st.GetFrame(0)
      Console.WriteLine()
      Console.WriteLine("  Exception in method: ")
      Console.WriteLine("      {0}", sf.GetMethod())
      
      If st.FrameCount > 1 Then
         ' Display the highest-level function call in the trace.
         sf = st.GetFrame((st.FrameCount - 1))
         Console.WriteLine("  Original function call at top of call stack):")
         Console.WriteLine("      {0}", sf.GetMethod())
      End If
      
      Console.WriteLine()
      Console.WriteLine("   ... throwing exception to next level ...")
      Console.WriteLine("-------------------------------------------------")
      Console.WriteLine()
      Throw e
   End Try
End Sub

Megjegyzések

Ez StackTrace a hívó aktuális szálával jön létre, és nem tartalmaz fájlnevet, sorszámot vagy oszlopinformációt.

Ezt a paraméter nélküli konstruktort akkor használja, ha teljes nyomkövetést szeretne, amely csak a hívásverem összesítő metódusadatait tartalmazza.

A következőre érvényes:

StackTrace(Boolean)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az osztály új példányát a StackTrace hívó keretéből, és opcionálisan rögzíti a forrásadatokat.

public:
 StackTrace(bool fNeedFileInfo);
public StackTrace(bool fNeedFileInfo);
new System.Diagnostics.StackTrace : bool -> System.Diagnostics.StackTrace
Public Sub New (fNeedFileInfo As Boolean)

Paraméterek

fNeedFileInfo
Boolean

truea fájlnév, a sorszám és az oszlopszám rögzítéséhez; egyéb esetben. false

Példák

Az alábbi példakód a konstruktor különböző StackTrace módszereit mutatja be.

public void Level2Method()
{
   try
   {
      ClassLevel3 nestedClass = new ClassLevel3();
      nestedClass.Level3Method();
   }
   catch (Exception e)
   {
      Console.WriteLine(" Level2Method exception handler");

      // Display the full call stack at this level.
      StackTrace st1 = new StackTrace(true);
      Console.WriteLine(" Stack trace for this level: {0}",
         st1.ToString());

      // Build a stack trace from one frame, skipping the current
      // frame and using the next frame.
      StackTrace st2 = new StackTrace(new StackFrame(1, true));
      Console.WriteLine(" Stack trace built with next level frame: {0}",
         st2.ToString());

      // Build a stack trace skipping the current frame, and
      // including all the other frames.
      StackTrace st3 = new StackTrace(1, true);
      Console.WriteLine(" Stack trace built from the next level up: {0}",
         st3.ToString());

      Console.WriteLine();
      Console.WriteLine("   ... throwing exception to next level ...");
      Console.WriteLine("-------------------------------------------------\n");
      throw e;
   }
}
Public Sub Level2Method()
   Try
      Dim nestedClass As New ClassLevel3
      nestedClass.Level3Method()
   
   Catch e As Exception
      Console.WriteLine(" Level2Method exception handler")
      
      ' Display the full call stack at this level.
      Dim st1 As New StackTrace(True)
      Console.WriteLine(" Stack trace for this level: {0}", _
         st1.ToString())
      
      ' Build a stack trace from one frame, skipping the current
      ' frame and using the next frame.
      Dim st2 As New StackTrace(New StackFrame(1, True))
      Console.WriteLine(" Stack trace built with next level frame: {0}", _
          st2.ToString())
      
      ' Build a stack trace skipping the current frame, and
      ' including all the other frames.
      Dim st3 As New StackTrace(1, True)
      Console.WriteLine(" Stack trace built from the next level up: {0}", _
          st3.ToString())
      
      Console.WriteLine()
      Console.WriteLine("   ... throwing exception to next level ...")
      Console.WriteLine("-------------------------------------------------")
      Console.WriteLine()
      Throw e
   End Try
End Sub

Megjegyzések

A StackTrace hívó aktuális szálával jön létre.

A következőre érvényes:

StackTrace(IEnumerable<StackFrame>)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Objektumkészletből StackFrame készít veremkövetőt.

public:
 StackTrace(System::Collections::Generic::IEnumerable<System::Diagnostics::StackFrame ^> ^ frames);
public StackTrace(System.Collections.Generic.IEnumerable<System.Diagnostics.StackFrame> frames);
new System.Diagnostics.StackTrace : seq<System.Diagnostics.StackFrame> -> System.Diagnostics.StackTrace
Public Sub New (frames As IEnumerable(Of StackFrame))

Paraméterek

frames
IEnumerable<StackFrame>

A veremkövetésben jelen lévő veremkeretek halmaza.

A következőre érvényes:

StackTrace(StackFrame)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az StackTrace osztály egy új példányát, amely egyetlen keretet tartalmaz.

public:
 StackTrace(System::Diagnostics::StackFrame ^ frame);
public StackTrace(System.Diagnostics.StackFrame frame);
new System.Diagnostics.StackTrace : System.Diagnostics.StackFrame -> System.Diagnostics.StackTrace
Public Sub New (frame As StackFrame)

Paraméterek

frame
StackFrame

A keret, amelyet az StackTrace objektumnak tartalmaznia kell.

Példák

Az alábbi példakód veremkövetési adatokat ír egy eseménynapló-bejegyzésbe.

StackFrame fr = new StackFrame(1,true);
StackTrace st = new StackTrace(fr);
EventLog.WriteEntry(fr.GetMethod().Name,
                    st.ToString(),
                    EventLogEntryType.Warning);
Dim frame As New StackFrame(1, True)
Dim strace As New StackTrace(frame)            

EventLog.WriteEntry(frame.GetMethod().Name, _
                    strace.ToString(), _
                    EventLogEntryType.Warning)

Megjegyzések

Akkor használja ezt a konstruktort, ha nem szeretné, hogy a teljes veremkövetés többlettere legyen.

Lásd még

A következőre érvényes:

StackTrace(Exception)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával.

public:
 StackTrace(Exception ^ e);
public StackTrace(Exception e);
new System.Diagnostics.StackTrace : Exception -> System.Diagnostics.StackTrace
Public Sub New (e As Exception)

Paraméterek

e
Exception

Az a kivételobjektum, amelyből létre kívánja készíteni a verem nyomkövetését.

Kivételek

A paraméter e a következő null: .

Megjegyzések

Ez StackTrace a hívó aktuális szálával jön létre, és nem tartalmaz fájlnevet, sorszámot vagy oszlopinformációt.

Az eredményként kapott veremkövetés a kivétel időpontjában írja le a vermet.

Lásd még

A következőre érvényes:

StackTrace(Int32)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az StackTrace osztály új példányát a hívó keretéből, kihagyva a megadott számú keretet.

public:
 StackTrace(int skipFrames);
public StackTrace(int skipFrames);
new System.Diagnostics.StackTrace : int -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer)

Paraméterek

skipFrames
Int32

A verem azon kereteinek száma, amelyekből elindíthatja a nyomkövetést.

Kivételek

A skipFrames paraméter negatív.

Megjegyzések

Ez StackTrace a hívó aktuális szálával jön létre, és nem tartalmaz fájlnevet, sorszámot vagy oszlopinformációt.

Ha a kihagyni kívánt keretek száma nagyobb vagy egyenlő a hívásverem teljes számával a példány létrehozásakor, a StackTrace program nem tartalmaz kereteket.

A következőre érvényes:

StackTrace(Exception, Int32)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával, és kihagyja a megadott számú keretet.

public:
 StackTrace(Exception ^ e, int skipFrames);
public StackTrace(Exception e, int skipFrames);
new System.Diagnostics.StackTrace : Exception * int -> System.Diagnostics.StackTrace
Public Sub New (e As Exception, skipFrames As Integer)

Paraméterek

e
Exception

Az a kivételobjektum, amelyből létre kívánja készíteni a verem nyomkövetését.

skipFrames
Int32

A verem azon kereteinek száma, amelyekből elindíthatja a nyomkövetést.

Kivételek

A paraméter e a következő null: .

A skipFrames paraméter negatív.

Megjegyzések

Ez StackTrace nem tartalmaz fájlnevet, sorszámot vagy oszlopinformációt.

Az eredményként kapott veremkövetés a kivétel időpontjában írja le a vermet.

Ha a kihagyni kívánt keretek száma nagyobb vagy egyenlő a hívásverem teljes számával a példány létrehozásakor, a StackTrace program nem tartalmaz kereteket.

Lásd még

A következőre érvényes:

StackTrace(Int32, Boolean)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az osztály új példányát a StackTrace hívó keretéből, kihagyja a megadott számú keretet, és opcionálisan rögzíti a forrásadatokat.

public:
 StackTrace(int skipFrames, bool fNeedFileInfo);
public StackTrace(int skipFrames, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : int * bool -> System.Diagnostics.StackTrace
Public Sub New (skipFrames As Integer, fNeedFileInfo As Boolean)

Paraméterek

skipFrames
Int32

A verem azon kereteinek száma, amelyekből elindíthatja a nyomkövetést.

fNeedFileInfo
Boolean

truea fájlnév, a sorszám és az oszlopszám rögzítéséhez; egyéb esetben. false

Kivételek

A skipFrames paraméter negatív.

Példák

Az alábbi példakód a konstruktor különböző StackTrace módszereit mutatja be.

public void Level2Method()
{
   try
   {
      ClassLevel3 nestedClass = new ClassLevel3();
      nestedClass.Level3Method();
   }
   catch (Exception e)
   {
      Console.WriteLine(" Level2Method exception handler");

      // Display the full call stack at this level.
      StackTrace st1 = new StackTrace(true);
      Console.WriteLine(" Stack trace for this level: {0}",
         st1.ToString());

      // Build a stack trace from one frame, skipping the current
      // frame and using the next frame.
      StackTrace st2 = new StackTrace(new StackFrame(1, true));
      Console.WriteLine(" Stack trace built with next level frame: {0}",
         st2.ToString());

      // Build a stack trace skipping the current frame, and
      // including all the other frames.
      StackTrace st3 = new StackTrace(1, true);
      Console.WriteLine(" Stack trace built from the next level up: {0}",
         st3.ToString());

      Console.WriteLine();
      Console.WriteLine("   ... throwing exception to next level ...");
      Console.WriteLine("-------------------------------------------------\n");
      throw e;
   }
}
Public Sub Level2Method()
   Try
      Dim nestedClass As New ClassLevel3
      nestedClass.Level3Method()
   
   Catch e As Exception
      Console.WriteLine(" Level2Method exception handler")
      
      ' Display the full call stack at this level.
      Dim st1 As New StackTrace(True)
      Console.WriteLine(" Stack trace for this level: {0}", _
         st1.ToString())
      
      ' Build a stack trace from one frame, skipping the current
      ' frame and using the next frame.
      Dim st2 As New StackTrace(New StackFrame(1, True))
      Console.WriteLine(" Stack trace built with next level frame: {0}", _
          st2.ToString())
      
      ' Build a stack trace skipping the current frame, and
      ' including all the other frames.
      Dim st3 As New StackTrace(1, True)
      Console.WriteLine(" Stack trace built from the next level up: {0}", _
          st3.ToString())
      
      Console.WriteLine()
      Console.WriteLine("   ... throwing exception to next level ...")
      Console.WriteLine("-------------------------------------------------")
      Console.WriteLine()
      Throw e
   End Try
End Sub

Megjegyzések

Ha a kihagyni kívánt keretek száma nagyobb vagy egyenlő a hívásverem teljes számával a példány létrehozásakor, a StackTrace program nem tartalmaz kereteket.

A következőre érvényes:

StackTrace(Thread, Boolean)

Figyelemfelhívás

This constructor has been deprecated. Please use a constructor that does not require a Thread parameter. http://go.microsoft.com/fwlink/?linkid=14202

Inicializálja az StackTrace osztály egy új példányát egy adott szálhoz, opcionálisan rögzíti a forrásadatokat.

Ne használja ezt a konstruktor túlterhelést.

public:
 StackTrace(System::Threading::Thread ^ targetThread, bool needFileInfo);
public StackTrace(System.Threading.Thread targetThread, bool needFileInfo);
[System.Obsolete("This constructor has been deprecated.  Please use a constructor that does not require a Thread parameter.  http://go.microsoft.com/fwlink/?linkid=14202")]
public StackTrace(System.Threading.Thread targetThread, bool needFileInfo);
new System.Diagnostics.StackTrace : System.Threading.Thread * bool -> System.Diagnostics.StackTrace
[<System.Obsolete("This constructor has been deprecated.  Please use a constructor that does not require a Thread parameter.  http://go.microsoft.com/fwlink/?linkid=14202")>]
new System.Diagnostics.StackTrace : System.Threading.Thread * bool -> System.Diagnostics.StackTrace
Public Sub New (targetThread As Thread, needFileInfo As Boolean)

Paraméterek

targetThread
Thread

Az a szál, amelynek a veremkövetését kéri a rendszer.

needFileInfo
Boolean

truea fájlnév, a sorszám és az oszlopszám rögzítéséhez; egyéb esetben. false

Attribútumok

Kivételek

A szál targetThread nincs felfüggesztve.

Megjegyzések

Important

Ne használja ezt a konstruktort. Elavult, és nincs ajánlott alternatíva. Amikor felfüggeszt egy szálat, nem tudja, hogy milyen kódot futtat, és a holtpontok nagyon könnyen előfordulhatnak. Ha például felfüggeszt egy szálat, amíg az zárolásokat tart egy biztonsági engedély kiértékelése során, a többi szál AppDomain blokkolva lehet. Ha felfüggeszt egy szálat egy osztálykonstruktor végrehajtása közben, a rendszer letiltja az AppDomain osztály használatára tett kísérlet többi szálát.

Lásd még

A következőre érvényes:

StackTrace(Exception, Int32, Boolean)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával, kihagyja a megadott számú keretet, és opcionálisan rögzíti a forrásadatokat.

public:
 StackTrace(Exception ^ e, int skipFrames, bool fNeedFileInfo);
public StackTrace(Exception e, int skipFrames, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : Exception * int * bool -> System.Diagnostics.StackTrace
Public Sub New (e As Exception, skipFrames As Integer, fNeedFileInfo As Boolean)

Paraméterek

e
Exception

Az a kivételobjektum, amelyből létre kívánja készíteni a verem nyomkövetését.

skipFrames
Int32

A verem azon kereteinek száma, amelyekből elindíthatja a nyomkövetést.

fNeedFileInfo
Boolean

truea fájlnév, a sorszám és az oszlopszám rögzítéséhez; egyéb esetben. false

Kivételek

A paraméter e a következő null: .

A skipFrames paraméter negatív.

Megjegyzések

Az eredményként kapott veremkövetés a kivétel időpontjában írja le a vermet.

Ha a kihagyni kívánt keretek száma nagyobb vagy egyenlő a hívásverem teljes számával a példány létrehozásakor, a StackTrace program nem tartalmaz kereteket.

Lásd még

A következőre érvényes:

StackTrace(Exception, Boolean)

Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs
Forrás:
StackTrace.cs

Inicializálja az osztály új példányát a StackTrace megadott kivételobjektum használatával, és opcionálisan rögzíti a forrásadatokat.

public:
 StackTrace(Exception ^ exception, bool needFileInfo);
public:
 StackTrace(Exception ^ e, bool fNeedFileInfo);
public StackTrace(Exception exception, bool needFileInfo);
public StackTrace(Exception e, bool fNeedFileInfo);
new System.Diagnostics.StackTrace : Exception * bool -> System.Diagnostics.StackTrace
new System.Diagnostics.StackTrace : Exception * bool -> System.Diagnostics.StackTrace
Public Sub New (exception As Exception, needFileInfo As Boolean)
Public Sub New (e As Exception, fNeedFileInfo As Boolean)

Paraméterek

exceptione
Exception

Az a kivételobjektum, amelyből létre kívánja készíteni a verem nyomkövetését.

needFileInfofNeedFileInfo
Boolean

truea fájlnév, a sorszám és az oszlopszám rögzítéséhez; egyéb esetben. false

Kivételek

A paraméter e a következő null: .

Megjegyzések

Az eredményként kapott veremkövetés a kivétel időpontjában írja le a vermet.

Lásd még

A következőre érvényes: