В потоках .NET нет кодов выхода. Они используются родными потоками в Windows, но собственные потоки только используют управляемыми потоками и не имеют соответствия 1: 1 данному управляемому потоку. Тот же управляемый поток может работать на нескольких собственных потоках и наоборот (хотя, очевидно, не в одно и то же время). Процитировать MSDN:
Операционная система ThreadId не имеет фиксированного отношения к управляемому потоку, поскольку неуправляемый хост может контролировать взаимосвязь между управляемыми и неуправляемыми потоками. В частности, сложный хост может использовать Fiber API для планирования многих управляемых потоков в одном потоке операционной системы или для перемещения управляемого потока между различными потоками операционной системы.
Это, конечно, относится ко всем ресурсам, привязанных к родной теме - но среда выполнение делает управление управляемых ресурсов нити, конечно; и для неуправляемого вызова кода в управляемый код поток будет сохраняться одинаковым, иначе взаимодействие будет совершенно невозможным.
Если вы хотите добавить дополнительную информацию в задачи, попробуйте использовать более высокий уровень абстракции - например, Task
. Нужно ли выводить статус задачи по завершении? Добавьте продолжение. Нужно проверить статус задания, на которое у вас есть ссылка? Подождите или запросите объект Task
.
Вы не должны использовать/полагаться на них в .net, причины/пояснения [здесь] (https://stackoverflow.com/questions/5628908/whats-the-equivalent-of-exitthreadexitcode-and-getexitcodethread-in -c-диез). –
Существует вызов Windows API ['ExitThread (DWORD)'] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682659 (v = vs.85) .aspx), который выходит из с помощью предоставленного кода выхода. Но я уверен, что это очень плохая идея назвать это из управляемых потоков по причинам, связанным с Manfred –