在C#中手动设置线程退出代码?

时间:2017-02-07 11:27:58

标签: c# multithreading debugging exit-code

有没有办法在C#中手动设置线程退出代码(用于调试目的)?

相关问题的选定答案" What is a thread exit code?"规定:

  

0倾向于表示它安全退出,而其他任何事情往往意味着它没有按预期退出。但是这个退出代码可以自己在代码中设置,完全忽略了这一点。

真的是一种自行设置线程退出代码的方法吗?

1 个答案:

答案 0 :(得分:3)

.NET线程没有退出代码。它们由Windows上的本机线程使用,但本机线程仅由托管线程使用,并且与给定的托管线程没有1:1的对应关系。相同的托管线程可以在多个本机线程上运行,反之亦然(尽管显然不是在同一时间)。引用MSDN:

  

操作系统ThreadId与托管线程没有固定的关系,因为非托管主机可以控制托管和非托管线程之间的关系。具体而言,复杂的主机可以使用Fiber API针对同一操作系统线程调度许多托管线程,或者在不同的操作系统线程之间移动托管线程。

这当然适用于绑定到本机线程的所有资源 - 但运行时确实管理了线程的托管资源;对于调用托管代码的非托管代码,线程将保持不变 - 否则互操作将是不可能的。

如果您想为任务添加额外信息,请尝试使用更高级别的抽象 - 例如Task。需要在完成时输出任务的状态吗?添加续集。需要检查您有参考的任务的状态?等待它或查询Task对象。