代码之家  ›  专栏  ›  技术社区  ›  vernou

从运行任务中获取堆栈跟踪

  •  0
  • vernou  · 技术社区  · 7 年前

    我想从正在运行的任务中获取堆栈跟踪,以了解阻塞的位置。

    class Program
    {
        static void Main(string[] args)
        {
            Task task = Task.Run((Action)DoSomething);
            if (!task.Wait(TimeSpan.FromSeconds(5)))
            {
                Console.WriteLine($"Timeout from the task {task.Id}.");
                Console.WriteLine(DisplayStackTrace(task));
            }
            Console.Read();
        }
    
        static void DoSomething()
        {
            Console.WriteLine("Being work");
            Task.Delay(TimeSpan.FromSeconds(10)).Wait();
            Console.WriteLine("End work");
        }
    
        static string DisplayStackTrace(Task task)
        {
            ?????
        }
    }
    

    你能帮我从任务中得到StackTrace吗?

    这与 How can I get stack trace of a currently executing Task? ,但这个问题还没有答案。

    0 回复  |  直到 7 年前