2016-06-28 20 views
10

Jakie byłyby (najbliżej) Rdzeń .NET 1.0 odpowiednik dla.NET 1.0 Rdzeń odpowiednik dla System.Threading.Thread.CurrentThread.ManagedThreadId

System.Threading.Thread.CurrentThread.ManagedThreadId 

?

aktualizacja

Jak @svick wyjaśnić System.Threading.Thread.CurrentThread.ManagedThreadId jest na swoim zwykłym miejscu. Zobacz zrzut ekranu poniżej. Pytanie jest zamknięte. (Nadal nie wiadomo, jak i kiedy instancja CurrentThread obiektu Instancja System.Threading.Thread została zainicjowana na wartość inną niż null (domyślna (System.Threading.Thread) jest zawsze == null?), Ale to nie jest przedmiotem tego wątek.)

enter image description here

aktualizacja 2

Właściwie System.Threading.Thread.CurrentThread.ManagedThreadId jest dostępny w podstawowej projektu .NET 1.0 aplikacji, które określiła w swoim project.json:

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

i brakuje w projekcie biblioteki .NET 1.0 podstawowej klasy, która zdefiniowała w project.json:

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

Jak zrobić System.Threading.Thread.CurrentThread .ManagedThreadId dostępny w projekcie biblioteki klasy .NET Core 1.0?

+0

Co ty patrzysz na to źródło zespołu odniesienia (dlatego jest to w katalog 'ref', a nie' src'). [Rzeczywistą implementacją jest CoreCLR.] (Https://github.com/dotnet/coreclr/blob/release/1.0.0/src/mscorlib/src/System/Threading/Thread.cs#L751-L758) – svick

+0

@ svick: Dziękuję, widzę to teraz - ManagedThreadId jest implementowany za pomocą hakowania w trybie natywnym - tutaj jest cytowany komentarz z kodu thread.cs: "_ Podstawowa implementacja wątku jest natywna. Poniższe pola nie powinny być nigdy używane w kodzie C# Są tutaj, aby zdefiniować odpowiednią przestrzeń, aby obiekt wątku mógł zostać przydzielony NIE ZMIENIAJ TEGO, JEŚLI MODYFIKUJESZ ThreadBaseObject w vm \ object.h_ " – ShamilS

Odpowiedz

19

To wciąż to samo: System.Threading. Thread . CurrentThread . ManagedThreadId.

Klasa Thread jest w opakowaniu System.Threading.Thread, które wliczone jest w Microsoft.NETCore.App, ale nie w NETStandard.Library. Oznacza to, że Thread będzie działać po wyjęciu z pudełka w aplikacji .Net Core, ale aby użyć go w bibliotece .Net Core, musisz dodać "System.Threading.Thread": "4.0.0" do "dependencies" w swoim projekcie.json.

dla VS 2017 i .csproj oparte projektów .NET rdzenia, musisz dodać go do .csproj:

<PackageReference Include="System.Threading.Thread" Version="4.0.0" />  
+0

Głupia mnie. Tak, właśnie zacząłem używać wczoraj .NET Core 1.0 i przegapiłem System.Threading.Thread.CurrentThread.ManagedThreadId. Będę aktualizował i zamknę moje pierwotne pytanie. – ShamilS

+0

Dodałem * update2 * wyjaśniające kontekst pytania/problemu: pytanie zostaje ponownie otwarte, aby otworzyć – ShamilS

+0

@ShamilS Updated. – svick