5

阅读 VS2008 帮助文件,我发现退出线程(在 .net 中)的干净方法是使用 return 语句(在 C# 中)或让线程到达方法的末尾。

但是,我还没有找到允许我设置线程退出代码的方法或属性,也没有找到检索它的方法(因为它是使用 Win32 API 完成的)。因此,问题是,我如何使用 C# 和 .net 来做到这一点?

感谢您的帮助,

约翰。

4

1 回答 1

7

未公开底层 Win32 线程原语的原因是为了防止托管代码依赖它们。CLR 团队一直致力于优化线程使用的方法,其中不包括关于 1:1 托管:非托管线程映射的保证(例如,请参阅此 MSDN 页面上的“注意” )。如果您真的想这样做,您将需要设置使用来自 Win32 GetCurrentThread() 的非托管线程句柄的 P/Invoke 包装器,或者使用自定义主机自己挂钩到线程映射过程。我也不推荐,除非您绝对必须与使用线程退出代码并且不是托管代码感知的东西进行互操作。如果您可以全部托管(或使用任务并行库),请找出另一种走私状态信息的方法从裸线程中抽象出一个级别)。

于 2011-04-12T01:18:00.500 回答