TaskWrapper.cs 1021 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Mir2Assistant.Common.Utils;
  7. namespace Mir2Assistant.Common.Functions
  8. {
  9. public static class TaskWrapper
  10. {
  11. /// <summary>
  12. /// 等待任务完成
  13. /// </summary>
  14. /// <param name="ack">确认是否完成</param>
  15. /// <param name="timeout">超时*100毫秒</param>
  16. /// <returns>是否成功</returns>
  17. public static async Task<bool> Wait(Func<bool> ack, int timeout = 10)
  18. {
  19. var success = true;
  20. await Task.Run(() =>
  21. {
  22. int i = 0;
  23. while (!ack())
  24. {
  25. Task.Delay(100).Wait();
  26. i++;
  27. if (i > timeout)
  28. {
  29. success = false;
  30. return;
  31. }
  32. }
  33. });
  34. return success;
  35. }
  36. }
  37. }