调试多线程应用。我正在冻结线程,因为我看到它们被创建,但我想知道是否有一个设置,以便默认情况下新生成的线程被挂起?
我一直瞥了一眼,看到了我不想要的新线程!
由于
答案 0 :(得分:4)
Visual Studio中没有此选项。您可以做的唯一事情就是在创建Thread对象的Suspend()方法后立即调用它。这不适用于线程池线程。
当你这样做时,编译器会唠叨你,Suspend()是一个过时的方法。它在.NET 1.x时代被滥用以同步线程,这是它无法可靠地完成的。这当然正是你正在做的事情。您通过这样做创建的特定问题是,您不再以一种在生产中如何工作的方式调试应用程序。你会隐藏线程竞争错误。
调试线程错误可能非常困难。几乎唯一合理的方法是使用跟踪。这本身就改变了代码执行时间,使得bug消失了。经过一周左右的调试后,请退后一步,问问自己该程序是否使用了太多线程并且无法维护。
答案 1 :(得分:2)
在线程过程的开头设置断点。打开threading window,这样就可以看到所有正在运行的线程。您只需单击线程(如果您想轻松识别它们,请将它们命名)。