c#threading奇怪的ThreadAbortException

时间:2015-12-10 06:39:27

标签: c# multithreading sockets console threadabortexception

我遇到了一个非常奇怪的问题。我确信它的东西很小但是我正在把这头发拉出来......

我正在努力将第三方库集成到我的应用程序中。我下载了lib,它附带了示例代码。我能够毫无问题地构建和运行示例代码。我将lib +示例代码复制到我自己的解决方案文件夹中,而不更改两个项目中的任何内容,将它们添加到我自己的解决方案中,构建并运行。我在示例应用程序的末尾得到了ThreadAbortException。这曾经在单独的文件夹中工作?!!?!

代码在侦听线程中打开套接字连接。线程监视并使用套接字信息。然后在程序退出之前,它会运行一个runner.Abort(),其中runner是线程。我无法弄清楚的是,为什么它不会在其原始的解压缩文件夹中抛出ThreadAbortException。但是,当我完全复制到我自己的解决方案中时,它会抛出?

我没有看到任何使用Thread.ResetAbort()。

需要一些帮助。提前谢谢。

我尝试过: 更改.net框架版本(无论我如何更改,原始目录都会正常运行,但我自己的解决方案会在ThreadAbortException上出现阻塞)

这是在Visual Studio 2013社区版上。

感谢您的阅读。

编辑以下***

配置文件完全相同。 bin目录显示生成的pdb文件具有大小差异,但其他文件的大小似乎相同。不起作用的代码具有较小的pdb文件。

我删除了lib项目和示例项目的原始目录bin,从示例项目中删除了引用并从解决方案中重新添加它。构建,并建立相同的大小(比其他解决方案更大)。跑吧,没有ThreadAbortException它就退出了。然后我在我自己的解决方案下做了同样的事情,它用较小的pdb构建并且出现了ThreadAbortException

我还验证了Visual Studio的两个实例都是2013社区。

1 个答案:

答案 0 :(得分:1)

我最终创建了一个全新的解决方案,将第三方项目放在那里。然后逐个在新解决方案中添加我的旧项目。我还不清楚为什么会这样。但我现在要继续前进。