每次有关应用程序的新事件到达时,我都会调用一个方法。此方法会启动一个新任务来处理事件,以便我们可以快速返回。例如:
public void HandleEvent(Event e)
{
Task.Run(() =>
{
// Do something with e
}
}
有时处理该事件需要很长时间,我想找出原因。我正在考虑这样做的一种方法是跟踪所有当前正在执行的此类任务,并创建一个监视线程,以监视花费超过一定时间的任何任务。当发生这种情况时,让监视器对该任务的线程进行堆栈跟踪。
这可能吗?
我认为,如果获得正在运行的线程的堆栈跟踪是不可能的或者太困难,我可能会以某种方式从外部触发ProcDump,尽管这样做太过分了,并且可能会抓取大量数据。需要。 (这是一个服务器进程,因此我预计会有数百个(如果不是数千个)处理线程。)
提前致谢,
丹