0

我正在制作一个包含大约六个后台工作人员和一个带有 mssql 查询队列的线程的应用程序。它必须非常稳定并且开发接近尾声,所以我运行了一个小测试,应用程序运行了大约四个小时。一切都很好,除了线程 ID。

我将所有重要事件和错误与线程 ID 一起记录。问题是,当应用程序启动时,I*D 值介于 5 和 15* 之间,但四个小时后大多数线程ID 值介于 70 和 90 之间。只有有时那些是15、40 或更小的东西。

我的问题是这会导致“ running out of free threads”错误吗?我不知道为什么会这样。两个后台工作人员进行无限循环(检查值),其他工作人员在需要时运行多次。是否有某种用于线程的 GC?为什么 ID 有这么大的值?

测试运行时,我没有在机器上做任何其他事情。

4

1 回答 1

1

假设您的工作人员即将结束,并且在旧工作人员仍处于不确定状态时没有启动新工作人员,我不会担心线程 ID 增加,它只是表示正在创建一个新线程 - 因为只要旧的完成,就可以了。您可以将您的程序连接到并发分析器并实际验证该行为 - 请参阅http://msdn.microsoft.com/en-us/magazine/ee336027.aspx

于 2013-07-26T19:55:08.767 回答