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


Soprattutto nel mio codice che uso AsParallel(). Qualsiasi() come posso ottenere l'ID filo di filo generato da che AsParellel.Any() ...Come arrivare filo Id in C#

+0

Perché vuoi saperlo? – svick

risposta

11

Thread.CurrentThread.ManagedThreadId ottiene l'ID del thread gestito del thread attualmente in esecuzione.

Se si desidera ottenere l'ID del thread nativo (non qualcosa che si desidera normalmente fare) è possibile chiamare il metodo AppDomain.GetCurrentThreadId() (obsoleto "perché non fornisce un ID stabile quando i thread gestiti sono in esecuzione su fibre" ma come per quanto ne so i thread gestiti sono solo in esecuzione su fibre all'interno di SQL Server).

+1

Per trovare l'ID del thread attualmente in esecuzione nel caso sopra devo scrivere Thread.CurrentThread.ManagedThreadId all'interno di AsParallel(). Any (item => {// I guess //}); ma quella linea non funziona perché quella linea contiene solo predicato. – Recawo

+1

@Recawo: Ma cosa vuoi fare? Ad ogni modo, puoi facilmente creare un predicato che interroga l'ID del thread corrente o lo avvolge in una funzione o lo scrive in linea come questo 'item => {... C# statement ...; ritorno risultato; } '. –