The reason that the underlying Win32 thread primitives are not displayed is to prevent the use of managed code. The CLR team is always working on how to optimize the use of threads and does not include any guarantees regarding the comparison of managed: unmanaged threads 1: 1 (see "Note" on the page of this MSDN . Page, for example). If you really want to do this, you will need to configure P / Invoke wrappers that use the unmanaged thread descriptor from Win32 GetCurrentThread (), or connect to the thread matching process yourself using a custom host. I would not recommend it either, if you absolutely do not need to interact with something that uses stream exit codes and is not controlled by code. Find out another way to smuggle state information around if you can manage it all (or use a parallel task library to abstract the level from bare threads).
source share