/ Published in: C#
A bit of example code that currently had a bug where the Debug.WriteLines that are "After FirstWait" and "After SecondWait" are never reached. What am I doing incorrectly?
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
public void Main() { Debug.WriteLine("The final result is {0}",result.Result); } public async Task<bool> LaunchTasks(List<int> waitTimes) { bool result = false; try { foreach (int wait in waitTimes) { var task1 = FirstWait(wait); tasks.Add(task1); var task2 = SecondWait(wait); tasks.Add(task2); } Debug.WriteLine("About to await on {0} Tasks", tasks.Count); await Task.WhenAll(tasks); Debug.WriteLine("After WhenAll"); } catch (Exception ex) { } return result; } private async Task<bool> FirstWait(int waitTime) { var task = Task.Factory.StartNew<bool>((delay) => { try { int count = (int)delay; for (int i = 0; i < count; i++) { Debug.WriteLine("FirstWait is at {0}", i); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } return true; }, waitTime); await Task.WhenAll(task); Debug.WriteLine("After FirstWait"); return task.Result; } private async Task<bool> SecondWait(int waitTime) { var task = Task.Factory.StartNew<bool>((delay) => { try { int count = (int)delay; for (int i = 0; i < count; i++) { Debug.WriteLine("SecondWait is at {0}", i); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } return true; }, waitTime); await Task.WhenAll(task); Debug.WriteLine("After SecondWait"); return task.Result; }