Environment.StackTraceを使用できます。それは当初からフレームワークの一部となっています。
Environment.StackTrace
は完全なスタックトレース(Environment.StackTrance
への呼び出しを含む)を行で区切られた文字列として返します。
このような何か:WpfApplication2.MainWindow.GetStack(のInt32 removeLines)でSystem.Environment.get_StackTraceでSystem.Environment.GetStackTrace(例外e、ブールneedFileInfo)で
()
WpfApplication2.MainWindow.Button_Click(オブジェクト送信者、RoutedEventArgs e)の
で ... System.Threading.ThreadHelper.ThreadStart()で
あなたがしなければならないことは、あなたが分割/解析/書式設定するだけです。
これは自分のクラス内で使用するので、最新のX行を削除してください。
このコードは意図的に低レベルなのでどこでも動作します。
private static string[] GetStack(int removeLines)
{
string[] stack = Environment.StackTrace.Split(
new string[] {Environment.NewLine},
StringSplitOptions.RemoveEmptyEntries);
if(stack.Length <= removeLines)
return new string[0];
string[] actualResult = new string[stack.Length - removeLines];
for (int i = removeLines; i < stack.Length; i++)
// Remove 6 characters (e.g. " at ") from the beginning of the line
// This might be different for other languages and platforms
actualResult[i - removeLines] = stack[i].Substring(6);
return actualResult;
}
あなたは確かに周りにそれをハック可能性: – MarcinJuraszek
@MarcinJuraszekニースはハック:)、例外をスローし、それをキャッチし、それから、コールスタックを読んで:)私はそれがあまりにも多くのパフォーマンスに影響します怖いです。 – Neir0