Wie wäre es mit remove/acces, es geht nicht nur um hinzufügen? Aber auch das Lesen von Gegenständen sollte gesperrt werden.
Es gibt ein kleines Problem, das durch Design: Sie verwenden ein ObservableCollection
, die meist von der GUI verwendet wird.
Ich rate Ihnen nicht die ObservableCollection<>
in anderen Threads als die GUI-Thread verwenden. Die Steuerelemente, die den Ereignissen "zuhören", werden zusammenbrechen, wenn sie auf anderen Threads als dem GUI-Thread ausgelöst werden. Wenn Elemente in einer ObservableCollection geändert werden, sollte sie auf dem Dispatcher aufgerufen werden. Auf diese Weise ist Ihre Sammlung threadsafe. (wegen nicht Gewindes mit)
Pseudo
public class MyControl: UserControl
{
private void MyMethodCalledFromAnOtherThread()
{
this.Dispatcher.Invoke(new Action(
{
// Change the collection...
myCol.Add("Hi there");
});
}
http://stackoverflow.com/questions/23108045/how-to-make-observablecollection-thread-safe check this! – TripleEEE
vom Link überprüfen Sie die Antwort von Robert Fraser! – mybirthname