首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >中断单线程

中断单线程
EN

Stack Overflow用户
提问于 2010-08-06 18:24:06
回答 5查看 3K关注 0票数 21

是否有可能在Visual Studio中中断单个线程,而其他线程将继续执行?

我有一个后台线程,它执行简单的数据发送/接收,而我希望在其他线程中单步执行代码时发生这种情况。

EN

回答 5

Stack Overflow用户

发布于 2010-08-06 18:58:13

打开线程视图(Debug->Windows-> thread ),右键单击要挂起的线程,选择“冻结”。选择“解冻”可将其恢复到运行状态。

票数 12
EN

Stack Overflow用户

发布于 2011-04-04 07:18:19

一般来说,这是不可能的,但有一些事情可能会在特定的情况下工作。

其他地方提到的Basic solution,重复顺序:冻结,恢复,(等待),暂停,解冻,步骤应该会产生你所描述的行为,当你的目标线程暂停时,给其他线程在后台运行的可能性。

这种方法至少有两个问题:

  • It's相当单调乏味
  • 只要调试程序暂停,后台线程就会挂起。

改进

第一个问题可以使用不同的过程来解决:在“即时”窗口中发出一个Thread.Sleep(10000),在其他线程正常执行时有效地保持聚焦的线程处于占用状态。您甚至可以将该命令绑定到宏。

第二个问题只能通过不需要暂停调试器的方法来解决。但是,当会话未暂停时,我们如何检查状态?这就是IntelliTrace的用武之地,但您可能会发现需要创建custom IntelliTrace events。这种方法的缺点是您不能在运行过程中手动修改状态。

票数 7
EN

Stack Overflow用户

发布于 2012-04-21 06:56:16

设置一个计数器,为创建的每个线程加1,然后将断点设置为在某个条件下中断,并为该计数器选取一个值。我不认为这会在所有情况下都起作用,特别是PLINQ,但在很多情况下应该是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3422875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档