Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. public async Task<List<Data>> GetDataWithTimeoutAsync(InputData data, int timeout)
  2. {
  3. List<Data> resultData = new List<Data>;
  4. await Task.WhenAny(Task.Run(async () =>
  5. {
  6. resultData.Add(SomeWork(data));
  7. }),
  8. Task.Delay(timeout));
  9.  
  10. return resultData;
  11. }
  12.  
  13. public async Task<List<List<Data>>> GetAllDataAsync()
  14. {
  15. var resultTasks = new ConcurrentBag<Task<List<Data>>>();
  16.  
  17. var firtsTask = GetDataWithTimeoutAsync(firstInputData, firtsTimeout);
  18. var secondTask = GetDataWithTimeoutAsync(secondInputData, secondTimeout);
  19. var thirdTask = GetDataWithTimeoutAsync(thirdInputData, thirdTimeout);
  20.  
  21. resultTasks.Add(Task.Run(() => firtsTask));
  22. resultTasks.Add(Task.Run(() => secondTask));
  23. resultTasks.Add(Task.Run(() => thirdTask));
  24.  
  25. await Task.WhenAll(resultTasks);
  26.  
  27. var result = resultTasks.Select(t => t.Result).ToList();
  28.  
  29. return result;
  30.  
  31. }
  32.  
  33. await Task.WhenAny(Task.Run(async () =>
  34. {
  35. resultData.Add(SomeWork(data));
  36. }),
  37. Task.Delay(timeout));
  38.  
  39. await Task.Delay(timeout).ContinueWith( async (t) =>
  40. {
  41. resultData.Add(SomeWork(data));
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement