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