2016-06-28 15 views
10

Điều gì sẽ là (gần nhất) NET Lõi 1.0 tương đương choNET Lõi 1.0 tương đương cho System.Threading.Thread.CurrentThread.ManagedThreadId

System.Threading.Thread.CurrentThread.ManagedThreadId 

?

cập nhật

Như @svick làm rõ System.Threading.Thread.CurrentThread.ManagedThreadId là ở vị trí bình thường của nó. Vui lòng xem ảnh chụp màn hình bên dưới. Câu hỏi được đóng lại. (Vẫn chưa rõ cách thức và khi nào thuộc tính của SystemThread.Thread được khởi tạo thành giá trị không null (mặc định (System.Threading.Thread) luôn luôn == null?) Nhưng đây không phải là chủ đề của điều này chủ đề.)

enter image description here

cập nhật 2

trên thực tế System.Threading.Thread.CurrentThread.ManagedThreadId có sẵn trong dự án 1.0 ứng dụng .NET Core, mà đã được định nghĩa trong nó project.json:

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

và mất tích trong dự án .NET Lõi 1,0 lớp thư viện, trong đó đã quy định tại project.json của nó:

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

Làm thế nào để làm cho System.Threading.Thread.CurrentThread .ManagedThreadId có sẵn trong dự án thư viện lớp .NET Core 1.0?

+0

gì bạn đang tìm kiếm là nguồn gốc của việc lắp ráp tham khảo (đó là lý do tại sao nó ở thư mục 'ref' và không phải trong' src'). [Việc triển khai thực tế là trong CoreCLR.] (Https://github.com/dotnet/coreclr/blob/release/1.0.0/src/mscorlib/src/System/Threading/Thread.cs#L751-L758) – svick

+0

@ svick: Cảm ơn bạn, tôi thấy nó ngay bây giờ - ManagedThreadId được thực hiện bằng cách sử dụng chế độ hacking bản địa - đây là một lời nhận xét được trích dẫn từ mã thread.cs: "_Sự thực thi cơ bản của Thread là tất cả các native. Các trường sau đây sẽ không bao giờ được sử dụng trong mã C# Họ đang ở đây để xác định không gian thích hợp để các đối tượng thread có thể được phân bổ. KHÔNG THAY ĐỔI BẠN KHÔNG CHỈNH SỬA MODBY ThreadBaseObject trong vm \ object.h_ " – ShamilS

Trả lời

19

Nó vẫn giống nhau: System.Threading. Thread . CurrentThread . ManagedThreadId.

Lớp Thread nằm trong gói System.Threading.Thread, được bao gồm trong Microsoft.NETCore.App, nhưng không có trong NETStandard.Library. Điều này có nghĩa là Thread sẽ hoạt động ra khỏi hộp trong ứng dụng .NET Core, nhưng để sử dụng nó trong thư viện .Net Core, bạn cần thêm "System.Threading.Thread": "4.0.0" vào "dependencies" trong project.json của mình.

Đối với VS 2017 và csproj dự án .NET lõi dựa, bạn muốn thêm nó vào csproj:

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

Ngớ ngẩn tôi. Có, tôi vừa mới bắt đầu sử dụng .NET Core 1.0 ngày hôm qua và tôi đã bỏ lỡ System.Threading.Thread.CurrentThread.ManagedThreadId. Tôi sẽ cập nhật và tôi sẽ đóng câu hỏi ban đầu của mình. – ShamilS

+0

Tôi đã thêm * update2 * làm rõ bối cảnh của câu hỏi/vấn đề chủ đề: câu hỏi được đặt lại để mở – ShamilS

+0

@ShamilS Đã cập nhật. – svick

Các vấn đề liên quan