我们的遗留产品之一是 Winforms 应用程序,它不使用后台线程,而是在主 UI 线程上执行所有操作。它有一个在这个主线程上运行的恒定循环,每 20 毫秒调用一次 Application.DoEvents()。应用程序偶尔会在 DoEvents 调用处挂起。我的问题是如何找出代码挂起的排队事件调用?
附言有人知道我可以用来获取进程中每个线程的堆栈跟踪的工具吗?
此外,这仅发生在生产客户端,我们现在必须解决。也不可能在客户端安装 VS。
最佳答案
您可以在 Visual Studio 中执行此操作,只需附加到进程、中断执行并打开线程窗口即可。
菜单:调试->Windows->线程
关于.net 卡在 Application.DoEvents 上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5969201/