多线程:防止 Visual Studio 阻塞特定线程 [重复]

Posted

技术标签:

【中文标题】多线程:防止 Visual Studio 阻塞特定线程 [重复]【英文标题】:Multithreading: prevent Visual Studio from blocking a particular thread [duplicate] 【发布时间】:2014-03-17 14:45:57 【问题描述】:

我有一个客户端/服务器多线程应用程序,一个线程用于将常规ping 发送到服务器。当我想调试其他线程时出现问题,它也会阻塞我的ping 线程。我已经在 Visual Studio Debug->Windows->Thread 中尝试过选项,但不想在每次需要调试应用程序的一部分时都使用它。

此外,当我在一个团队中工作时,我不能强迫我的队友使用这种技术。我怎样才能不费力气地做到这一点(宏,...)?

谢谢

编辑:这不是重复的线程!我不想每次需要调试我的应用程序时都使用条件断点!并且不想让我的团队其他成员的调试过程变得复杂。我到处搜索,没有人谈论在另一个Process 中执行线程

【问题讨论】:

感谢您的帮助,并为我是法语的语法错误感到抱歉^^,但不,我不想在每次需要调试时设置条件断点,其余部分也一样我的团队 解决方法:假设 ping 线程主要是独立的东西,将其转换为完整的子进程。 非常感谢您的回答,我尝试了@hyde 解决方法,但仍有问题,我无法从我的子进程访问我的主应用程序的 NetworkStream,但我需要它发送一些数据。此流一方面用于发送数据,另一方面用于 ping 服务器。任何的想法?我还是会搜索... 请不要在问题标题中包含有关所用语言的信息,除非没有它就没有意义。标记用于此目的。 【参考方案1】:

谢谢大家,我终于找到了我的问题的答案!

正如@hyde 建议的那样,我在另一个进程中运行我的 Ping 循环,但我没有创建另一个程序,而是从我的代码中动态创建并执行它

如本主题所示: Is it possible to dynamically compile and execute C# code fragments?

还有这个更高级的主题: http://simeonpilgrim.com/blog/2007/12/04/compiling-and-running-code-at-runtime/

但毕竟我还有一个问题...我需要在我的 Main Application 和他的 Child 之间分享我的NetworkStream(需要发送到同一个服务器Thread),所以我通过反射给了孩子NetworkStream

现在可以正常工作了,谢谢!

【讨论】:

以上是关于多线程:防止 Visual Studio 阻塞特定线程 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

visual studio2010的项目属性设置中,运行库选择多线程,多线程调试,多线程dll,多线程调试dll有啥区别

Visual Studio 2010多线程编程

Visual Studio调试器指南---多线程应用程序调试

如何在 Visual Studio 2017 中为 Linux 应用启用多线程

使用 Visual Studio 构建 FLTK 多线程 (MT) 项目

Visual Studio 2010 OpenCV 多线程垫不复制到另一个垫