2016-06-28 34 views
10

Quale sarebbe (il più vicino) .NET 1.0 Nucleo equivalente per.NET 1.0 Nucleo equivalente per System.Threading.Thread.CurrentThread.ManagedThreadId

System.Threading.Thread.CurrentThread.ManagedThreadId 

?

aggiornamento

Come chiarito @svick System.Threading.Thread.CurrentThread.ManagedThreadId è a sua sede abituale. Si prega di vedere lo screenshot qui sotto. La domanda è chiusa. (Ancora non chiaro come e quando l'istanza della proprietà CurrentThread della proprietà System.Threading.Thread è inizializzata su un valore non nullo (predefinito (System.Threading.Thread) è sempre == null?) Ma questo non è l'argomento di questo argomento.)

enter image description here

aggiornamento 2

realtà System.Threading.Thread.CurrentThread.ManagedThreadId è disponibile in NET Nucleo progetto 1.0 applicazione, che è definita nella sua project.json:

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

e manca in .NET Nucleo progetto di libreria 1.0 di classe, che ha definito nella sua project.json:

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

Come fare System.Threading.Thread.CurrentThread .ManagedThreadId disponibile nel progetto di libreria di classi .NET Core 1.0?

+0

Quello che stai guardando è la fonte del gruppo di riferimento (è per questo che è in la directory 'ref' e non in' src'). [L'implementazione effettiva è in CoreCLR.] (Https://github.com/dotnet/coreclr/blob/release/1.0.0/src/mscorlib/src/System/Threading/Thread.cs#L751-L758) – svick

+0

@ svick: Grazie, lo vedo ora - ManagedThreadId è implementato usando l'hacking in modalità nativa - ecco un commento citato dal codice thread.cs: "_L'implementazione di base di Thread è tutto nativa. I seguenti campi non dovrebbero mai essere usati nel codice C# Sono qui per definire lo spazio appropriato in modo che l'oggetto thread possa essere allocato. NON CAMBIARE QUESTI A MENO CHE NON MODIFICATE ThreadBaseObject in vm \ object.h_ " – ShamilS

risposta

19

È sempre lo stesso: System.Threading. Thread . CurrentThread . ManagedThreadId.

La classe Thread è nel pacchetto System.Threading.Thread, incluso in Microsoft.NETCore.App, ma non in NETStandard.Library. Ciò significa che Thread funzionerà in modo predefinito in un'applicazione .Net Core, ma per utilizzarlo in una libreria .Net Core, è necessario aggiungere "System.Threading.Thread": "4.0.0" a "dependencies" nel file project.json.

Per VS 2017 e .NET Csproj progetti core basato, che ci si aggiunge alla .csproj:

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

Silly me. Sì, ho appena iniziato a utilizzare .NET Core 1.0 ieri e ho perso System.Threading.Thread.CurrentThread.ManagedThreadId. Aggiornerò e chiuderò la mia domanda originale. – ShamilS

+0

Ho aggiunto * update2 * per chiarire il contesto della domanda/problema dell'argomento: la domanda viene reimpostata per aprire – ShamilS

+0

@ShamilS Aggiornato. – svick