다른 스레드에서 예외에서 스택 트레이스?
-
05-07-2019 - |
문제
StackTrace에는 인수로 예의를 취하는 생성자가 있습니다. 모두 괜찮고 잘하지만 다른 모든 생성자가 현재 스레드에서 스택 트레이스를 얻을 것이라고 말하지만 예외를 취하는 생성자는 그 이외의 다른 것에 대해 아무 말도하지 않는다는 것을 알았습니다.
결과 스택 추적은 예외 시점에 스택을 설명합니다.
나는 다른 스레드에서 예외에서 스택 트레이스를 만들 때 예외가 생성 된 다른 스레드에서 스택 트레이스를 만들어도 예외의 올바른 스택 트레이스를 얻을 것입니다.
누군가 확인해 주시겠습니까?
해결책
내가 뭔가를 놓치지 않는 한 시도하기에 충분히 쉬워 보입니다. 이것은 나에게 올바른 스택 추적을 인쇄합니다.
static Exception threadEx;
static void Main()
{
Thread worker = new Thread(DoWork);
worker.Start();
worker.Join();
if (threadEx != null) {
StackTrace trace = new StackTrace(threadEx);
Console.WriteLine(trace);
}
}
static void DoWork()
{
try {
throw new Exception("Boom!");
}
catch (Exception ex) {
threadEx = ex;
}
}
다른 팁
호출 된 스레드의 스택 트레이스를 만듭니다 (내부적으로 'TargetThread'매개 변수로 'CapturestackTrace'를 호출합니다. 이는 현재 스레드가 요청되었음을 나타냅니다). 다른 스레드를 생성하는 유일한 CTOR는 스레드 인스턴스를 취하는 것입니다.
제휴하지 않습니다 StackOverflow