public async Task <IHttpActionResult> AsyncOperation() { var bo = new BusinessObjectAsync(); await bo.OperationAsync(); return(Ok($"Completed Count: {bo.CompletedCount}")); }
public async Task AsyncOperation() { var asyncEvent = new BusinessObjectAsync(); await asyncEvent.OperationAsync(); await asyncEvent.OperationAsync(); await asyncEvent.OperationAsync(); Assert.AreEqual(3, asyncEvent.CompletedCount); }
public async Task BusinessObject_AutoResetEvent_MultipleThreads() { var asyncEvent = new BusinessObjectAsync(); var allTasks = new List <Task>(); var maxThreadCount = 0; var cancel = false; var task = Task.Run(async() => { if (Process.GetCurrentProcess().Threads.Count > maxThreadCount) { maxThreadCount = Process.GetCurrentProcess().Threads.Count; } await Task.Delay(50); if (cancel) { return; } }); for (var i = 0; i < 20; i++) { List <Task> tasks = new List <Task>(); for (var j = 0; j < 20; j++) { tasks.Add(Task.Run(async() => await asyncEvent.OperationAsync())); await Task.Delay(15); } allTasks.AddRange(tasks); await Task.WhenAll(tasks); } Assert.AreEqual(400, asyncEvent.CompletedCount); cancel = true; await task; }
public async Task BusinessObject_Simple_MultipleThreads() { var asyncEvent = new BusinessObjectAsync(); var allTasks = new List <Task>(); for (var i = 0; i < 20; i++) { List <Task> tasks = new List <Task>(); for (var j = 0; j < 20; j++) { tasks.Add(Task.Run(async() => await asyncEvent.OperationAsync())); } allTasks.AddRange(tasks); await Task.WhenAll(tasks); } Assert.AreEqual(400, asyncEvent.CompletedCount); }
private async void AsyncOperation_Click(object sender, RoutedEventArgs e) { await BusinessObjectAsync.OperationAsync(); }