我能够打印一个在运行时捕获exception的线程的堆栈跟踪。 我还需要打印在同一个进程中运行的其他线程的踪迹。 我有兴趣find一个很好的方法来冻结所有线程,只要一个线程捕获到exception。
现在,我所能做的就是查询每个活动线程,然后SuspendThread()。 但是,这会导致每个线程在捕获到初始exception之后执行一次。 有没有办法立即导致每个线程暂停?
谢谢。
您是否尝试使用PostMessage()从被捕获异常的工作线程的GUI线程?
提议的步骤如下:
1)GUI线程产生几个工作线程
2)工作线程PostMessage()一旦被捕获异常
3)GUI线程接收消息
4)GUI线程指示剩余的工作线程暂停
注意:定义你自己的消息
通过这种方式,在暂停工作线程之前,您仍然会看到一些延迟。
另一种方法是在工作线程中使用像事件句柄一样的同步对象。