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


oben in meinem Code bekommen verwende ich AsParallel(). Any() Wie kann ich die Thread-ID des Threads von diesem AsParellel.Any erzeugt get() ...Wie Thread-ID in C#

+0

Warum möchten Sie das wissen? – svick

Antwort

11

Thread.CurrentThread.ManagedThreadId ruft die verwaltete Thread-ID des aktuell ausgeführten Threads ab.

Wenn Sie stattdessen die native Thread-ID erhalten möchten (nicht etwas, das Sie normalerweise tun möchten), können Sie die Methode AppDomain.GetCurrentThreadId() aufrufen (veraltet "weil es keine stabile ID bietet, wenn verwaltete Threads auf Fasern ausgeführt werden") Soweit ich weiß verwaltete Threads laufen nur auf Fasern in SQL Server).

+1

Um die Thread-ID des aktuell ausgeführten Threads im obigen Fall zu finden, muss ich Thread.CurrentThread.ManagedThreadId in AsParallel() schreiben. Any (item => {// hier ich rate //}); Aber diese Zeile funktioniert nicht, da diese Zeile nur Prädikat enthält. – Recawo

+1

@Recawo: Aber was willst du machen? Wie auch immer, Sie können einfach ein Prädikat erstellen, das die aktuelle Thread-ID abfragt, indem es entweder in eine Funktion eingebunden oder inline geschrieben wird, wie in diesem Beispiel: item => {... C# statements ...; Ergebnis zurückgeben; } '. –