我正在制作一个应用程序,其中包含六个后台工作程序和一个Thread ,其中包含用于mssql查询的队列。它必须非常稳定,并且开发即将结束,所以我进行了一个小测试,应用程序运行了大约四个小时。一切都很好,除了线程ID。
我将所有重要事件和错误与线程ID一起记录下来。问题是,当应用程序启动时,I * D值在5到15 *之间,但在四小时之后大多数线程 ID值介于70之间和90 。只有有时那些 15,40或更小的。
我的问题是这会导致“running out of free threads
”错误吗?我不知道为什么会这样。两个后台工作者进行无限循环(检查值),其他人在需要时运行几次。线程有什么样的GC吗?为什么ID有如此大的价值?
测试运行时,我在机器上没有做任何其他事情。
答案 0 :(得分:1)
假设你的工作人员已经完全结束了,并且新的工作人员没有在旧工作人员处于不稳定状态时被旋转,我不会担心线程ID增加,它只是表明一个新的线程正在创造 - 只要旧的完成,那很好。您可以将程序连接到Concurrency Analyzer并实际验证该行为 - 请参阅http://msdn.microsoft.com/en-us/magazine/ee336027.aspx