2012-04-19 34 views
5
public bool HasItemsFromPropertySet(InfoItemPropertySet propertySet, CompositeInfoItem itemRemoved) 
    { 
     var itemAndSubItems = new InfoItemCollection(); 
     if (itemRemoved != null) 
     { 
      itemAndSubItems.Add(itemRemoved); 
      //foreach (InfoItem item in itemRemoved.AllDescendants) 
      itemAndSubItems.AddRange(itemRemoved.AllDescendants); 
     } 
     return AllItems.AsParallel().Any(item => item.PropertySet == propertySet && !itemAndSubItems.Contains(item)); 
    } 


Trên trong mã của tôi, tôi sử dụng AsParallel(). Bất kỳ() Làm thế nào tôi có thể lấy chủ đề ID của thread được tạo ra bởi rằng AsParellel.Any() ...Làm thế nào để có được Id thread trong C#

+0

Tại sao bạn muốn biết điều đó? – svick

Trả lời

11

Thread.CurrentThread.ManagedThreadId nhận ID luồng được quản lý của chuỗi hiện đang thực thi.

Nếu bạn muốn thay đổi ID gốc (không phải thứ bạn thường muốn), bạn có thể gọi phương thức AppDomain.GetCurrentThreadId() (lỗi thời) vì nó không cung cấp Id ổn định khi chuỗi được quản lý chạy trên sợi "nhưng xa như tôi biết chủ đề quản lý chỉ chạy trên các sợi bên trong SQL Server).

+1

Để tìm thread thread của hiện đang thực hiện thread trong trường hợp trên tôi phải viết Thread.CurrentThread.ManagedThreadId bên trong AsParallel(). Any (item => {// here tôi đoán //}); nhưng dòng đó không hoạt động vì dòng đó chỉ chứa vị từ. – Recawo

+1

@Recawo: Nhưng bạn muốn làm gì? Dù sao, bạn có thể dễ dàng tạo ra một vị từ truy vấn ID luồng hiện tại bằng cách gói nó vào một hàm hoặc viết nó trực tuyến như thế này 'item => {... C# statements ...; kết quả trả về; } '. –

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