Эквивалент .NET Core 1.0 для System.Threading.Thread.CurrentThread.ManagedThreadId

Что было бы (ближайшим) эквивалентом .NET Core 1.0 для

System.Threading.Thread.CurrentThread.ManagedThreadId 

?

обновить

Как пояснил @svick, System.Threading.Thread.CurrentThread.ManagedThreadId находится в обычном месте. Пожалуйста, смотрите скриншот ниже. Вопрос закрыт. (Все еще неясно, как и когда экземпляр System.Threading.Thread свойства CurrentThread инициализируется ненулевым значением (по умолчанию(System.Threading.Thread) всегда == null ?) но это не предмет данной темы.)

введите описание изображения здесь

обновление 2

На самом деле System.Threading.Thread.CurrentThread.ManagedThreadId доступен в проекте приложения .NET Core 1.0, который определил в своем project.json:

"frameworks": {
  "netcoreapp1.0": {
  "imports": "dnxcore50"
}

и отсутствует в проекте библиотеки классов .NET Core 1.0, который определен в его project.json:

"frameworks": {
  "netstandard1.6": {
   "imports": "dnxcore50"
}

Как сделать System.Threading.Thread.CurrentThread.ManagedThreadId доступным в проекте библиотеки классов .NET Core 1.0?


person ShamilS    schedule 28.06.2016    source источник
comment
То, на что вы смотрите, является исходным кодом эталонной сборки (поэтому он находится в каталоге ref, а не в src). Фактическая реализация находится в CoreCLR.   -  person svick    schedule 29.06.2016
comment
@svick: Спасибо, теперь я вижу - ManagedThreadId реализован с использованием взлома собственного режима - вот цитируемый комментарий из кода thread.cs: Базовая реализация Thread полностью нативна. Следующие поля никогда не должны использоваться в коде C#. Они здесь, чтобы определить правильное пространство, чтобы объект потока мог быть выделен. НЕ ИЗМЕНЯЙТЕ ЭТО, ЕСЛИ ВЫ НЕ ИЗМЕНИТЕ ThreadBaseObject в vm\object.h   -  person ShamilS    schedule 29.06.2016


Ответы (1)


Всё так же: System.Threading.Thread.CurrentThread.ManagedThreadId.

Класс Thread находится в пакете System.Threading.Thread, который входит в Microsoft.NETCore.App, но не входит в NETStandard.Library. Это означает, что Thread будет работать из коробки в приложении .Net Core, но чтобы использовать его в библиотеке .Net Core, вам нужно добавить "System.Threading.Thread": "4.0.0" в "dependencies" в вашем проекте.json.

Для проектов .NET Core на основе VS 2017 и .csproj вы должны добавить его в .csproj:

    <PackageReference Include="System.Threading.Thread" Version="4.0.0" />    
person svick    schedule 28.06.2016
comment
Дурак я. Да, я только вчера начал использовать .NET Core 1.0 и пропустил System.Threading.Thread.CurrentThread.ManagedThreadId. Я обновлю и закрою свой первоначальный вопрос. - person ShamilS; 29.06.2016
comment
Я добавил update2, уточняющий контекст предметного вопроса/проблемы: вопрос снова открыт - person ShamilS; 30.06.2016
comment
Да, добавление "System.Threading.Thread": "4.0.0" в раздел dependencies файла project.json решает проблему. - person ShamilS; 03.07.2016
comment
ОТ: (следующий вопрос следует задать отдельно, будет ли он принят на StackOverflow?) Где можно найти подробное описание того, что входит в Microsoft.NETCore.App и что входит в NETStandard.Library? - Я хотел преобразовать свою библиотеку классов, веб-службу и консольное приложение, совместимую с универсальной/утилитой .NET Framework 4.0, в .NETCore 1.0, чтобы они работали как под MS Windows, так и под Linux. Я хотел сохранить свою текущую разработку/конверсию в VS2015, но затем портировать проект под VSCode. Я не вижу в Интернете никаких учебников. - person ShamilS; 03.07.2016
comment
@ShamilS Да, я думаю, что задать новый вопрос было бы лучшим вариантом, комментарии не предназначены для этого. - person svick; 03.07.2016
comment
Хорошо, похоже, что мой вопрос уже был опубликован, и здесь был дан ответ. .NET Core — решения, фреймворки, импорт, время выполнения (stackoverflow.com/questions/37585898/) - person ShamilS; 03.07.2016