有没有什么办法让新生成的线程在Visual Studio中自动挂起?

问题描述:

调试多线程应用程序。我在看到它们创建时冻结了线程,但是我想知道是否有一个设置,以便新生成的线程默认暂停?有没有什么办法让新生成的线程在Visual Studio中自动挂起?

我不停地看了一眼,看到新的线程正在运行,我不想要!

谢谢

在Visual Studio中没有这样的选项。你可以做的唯一事情就是在创建它之后立即调用一个Thread对象的Suspend()方法。这对于线程池线程无效。

当你这样做时,编译器会唠叨你,Suspend()是一个过时的方法。它在.NET 1.x的日子里被滥用以同步线程,它无法可靠地执行。这当然正是你在做什么。通过这样做创建的特定问题是,您只是不再以对生产中的工作方式具有代表性的方式调试应用程序。你会隐藏线程竞赛bug。

调试线程错误可能非常困难。几乎唯一合理的方法是使用跟踪。这本身就改变了代码执行的时间,使得错误消失。在调试了一个星期左右之后,退后一步,问自己程序是否使用了太多的线程,并且变得无法维护。

+0

很酷。我也这么想。感觉就像听猫一样! – gb2d 2010-07-08 11:04:23

在线程过程的开始处设置一个断点。打开threading window,以便您可以看到所有正在运行的线程。您可以简单地点击线索(如果您想要轻松识别它们,请点名)。

+0

补偿upvote。它没有提供OP的解决方案,但抓住吸管在这里是适当的。 – 2010-07-06 14:56:20

+0

哈哈,谢谢汉斯。你摇滚 – 2010-07-06 15:01:32