public async Task AutoResetEvent_MultipleThreads() { var completedCount = 0; var collection = new ObservableCollectionAsync <string>(); collection.CollectionChangedAsync += async(o, e) => { await Task.Delay(1000); completedCount++; }; List <Task> tasks = new List <Task>(); tasks.Add(Task.Run(() => collection.AddAsync("value"))); tasks.Add(Task.Run(() => collection.AddAsync("value"))); tasks.Add(Task.Run(() => collection.AddAsync("value"))); await Task.WhenAll(tasks); Assert.AreEqual(3, completedCount); }
public async Task SimpleAdd_MultipleThreads() { var completedCount = 0; var collection = new ObservableCollectionAsync <string>(); collection.CollectionChangedAsync += async(o, e) => { await Task.Delay(1000); completedCount++; }; // This should fail like AsyncEventTests.BusinessObject_Simple_MultipleThreads!!! List <Task> tasks = new List <Task>(); tasks.Add(Task.Run(() => collection.AddAsync("value"))); tasks.Add(Task.Run(() => collection.AddAsync("value"))); tasks.Add(Task.Run(() => collection.AddAsync("value"))); await Task.WhenAll(tasks); Assert.AreEqual(3, completedCount); }
public async Task SimpleAdd() { var completedCount = 0; var collection = new ObservableCollectionAsync <string>(); collection.CollectionChangedAsync += async(o, e) => { await Task.Delay(1000); completedCount++; }; await collection.AddAsync("value"); Assert.AreEqual(1, completedCount); }