2012-04-19 29 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)); 
    } 


मेरी कोड में से ऊपर सी # में धागा आईडी प्राप्त करने के लिए मैं AsParallel()। का उपयोग किसी भी() मैं कैसे मिलता है कि AsParellel.Any() द्वारा उत्पन्न धागे की थ्रेड ID कर सकते हैं ...कैसे

+0

आप इसे क्यों जानना चाहते हैं? – svick

उत्तर

11

Thread.CurrentThread.ManagedThreadId वर्तमान में निष्पादित थ्रेड की प्रबंधित थ्रेड आईडी प्राप्त करता है।

यदि आप इसके बजाय मूल धागा आईडी प्राप्त करना चाहते हैं (ऐसा कुछ नहीं जिसे आप सामान्य रूप से करना चाहते हैं) तो आप विधि AppDomain.GetCurrentThreadId() (अप्रचलित "कह सकते हैं क्योंकि यह स्थिर आईडी प्रदान नहीं करता है जब प्रबंधित थ्रेड फाइबर पर चल रहे होते हैं" लेकिन जैसा कि जहां तक ​​मुझे पता है कि प्रबंधित थ्रेड केवल SQL सर्वर के अंदर फाइबर पर चल रहे हैं)।

+1

उपर्युक्त मामले में वर्तमान में थ्रेड निष्पादित करने के थ्रेड आईडी को खोजने के लिए मुझे AsParallel() के अंदर Thread.CurrentThread.ManagedThreadId लिखना है। कोई भी (item => {// यहां मुझे लगता है //}); लेकिन वह रेखा काम नहीं करती है क्योंकि उस पंक्ति में केवल भविष्यवाणी होती है। – Recawo

+1

@Recawo: लेकिन आप क्या करना चाहते हैं? वैसे भी, आप आसानी से एक अनुमान बना सकते हैं जो वर्तमान थ्रेड आईडी से किसी फ़ंक्शन में लपेटकर या इसे 'item => {... सी # कथन ... जैसे इनलाइन लिखकर पूछता है; वापसी परिणाम; } '। –