Ответы с форумов MSDN

ThreadState.WaitSleepJoin

Date: 28.12.2020 5:21:55

ThreadState.WaitSleepJoin соответствует внутреннему состоянию TS_Interruptible в CLR: https://github.com/dotnet/runtime/blob/master/src/coreclr/vm/comsynchronizable.cpp#L673. В это состояние поток переходит, когда вызывается один из методов ожидания в .NET: WaitHandle.WaitOne, Thread.Sleep, Monitor.Enter и другие. Но функция GetMessage является функцией Windows, и при ее вызове этот флаг не устанавливается, хотя она также переводит поток в состояние ожидания прерывания. С точки зрения CLR, поток остается в состоянии Running. А  System.Diagnostics.ThreadState считывает реальное состояние потока ОС через счетчики производительности, поэтому оно всегда вернет актуальное значение.


Автор: VadimTagil

Главная страница - Список тем - Репозиторий на GitHub