阅读VS2008帮助文件后,我发现在.NET中退出线程的清洁方法是使用return语句(在C#中)或让线程到达方法的结尾。然而,我没有找到一个允许我设置线程退出代码或检索它的方法或属性(就像使用Win32 API那样)。因此,问题是,我如何使用C#和.NET实现这一点?谢谢您的帮助,John.
为了防止受控代码依赖于它们,底层的 Win32 线程原语不会被暴露出来。CLR 团队一直在寻找优化线程使用的方法,其中包括对 1:1 受控线程与非托管线程映射不做任何保证(例如请参见此 MSDN 页面上的注释)。如果您确实想要这样做,就需要设置使用 Win32 GetCurrentThread() 中的非托管线程句柄的 P/Invoke 封装器,或使用自定义宿主钩入线程映射过程。除非您必须与使用线程退出代码且不具备托管代码意识的内容进行交互,否则我不建议使用任何一种方法。如果可以完全使用托管代码,请找到另一种方法来传递状态信息(或使用任务并行库来从裸线程抽象上升一级)。