Guest User

Untitled

a guest
Jan 17th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.12 KB | None | 0 0
  1. static async Task<string> DoIt()
  2. {
  3. Random r = new Random();
  4. Task<string> t1 = Task.Delay(r.Next(3000)).ContinueWith(t => "one");
  5. Task<string> t2 = Task.Delay(r.Next(3000)).ContinueWith(t => "two");
  6.  
  7. return await MagicFunction(t1, t2);
  8. }
  9.  
  10. static Task<string> MagicFunction(Task<string> t1, Task<string> t2)
  11. {
  12. TaskCompletionSource<string> res = new TaskCompletionSource<string>();
  13. Task.Factory.ContinueWhenAny(new Task<string>[] { t1, t2 }, t => res.SetResult(t.Result));
  14.  
  15. return res.Task;
  16. }
  17.  
  18. static async Task<string[]> DoIt()
  19. {
  20. Random r = new Random();
  21. Task<string> t1 = Task.Delay(r.Next(3000)).ContinueWith(t => "one");
  22. Task<string> t2 = Task.Delay(r.Next(3000)).ContinueWith(t => "two");
  23.  
  24. return await Task.WhenAll(t1, t2); // вернет string[]
  25. }
  26.  
  27. static async Task<string> DoIt()
  28. {
  29. Random r = new Random();
  30. Task<string> t1 = Task.Delay(r.Next(3000)).ContinueWith(t => "one");
  31. Task<string> t2 = Task.Delay(r.Next(3000)).ContinueWith(t => "two");
  32.  
  33. var task = await Task.WhenAny(t1, t2); // вернет Task<string>
  34. return await task; // вернет string
  35. }
Add Comment
Please, Sign In to add comment