2016-04-09 13 views
0

Ich möchte diese Sache über generische Listenverwendung mit verschiedenen Threads fragen, gibt es generische Liste Objekte, die ich habe, und gleichzeitig verschiedene Threads hinzufügen, entfernen, erhalten oder aktualisieren Sie diese Liste. Ich versuche, diese Situation mit Code unten zu behandeln. Ist das in Ordnung ? oder verpasse ich etwas?GenericList Verwendung mit verschiedenen Threads

public static TSource FirstOrDefaultThreadSafe<TSource>(this List<TSource> source, Func<TSource, bool> predicate) where TSource:new() 
    { 
     TSource result=new TSource(); 
     lock (source) 
     { 
      result = source.FirstOrDefault(predicate);     
     }  
     return result; 
    } 




public static void AddThreadSafe<T>(this List<T> sourceList, T item) 
    { 
     lock (sourceList) 
     { 
      sourceList.Add(item);    
     } 
    } 

Antwort

2

Ja. Das wird gut. Lassen Sie mich Ihnen einen Rat geben, wenn generinc Liste häufiger lesen (finden oder Operation erhalten) als schreiben (hinzufügen oder aktualisieren Operation), verwenden Sie Lese-Schreib-Sperre. Das wird effizienter und strategischer.