ThreadHelper.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6. namespace WCS.Data
  7. {
  8. public class ThreadHelper
  9. {
  10. //static CancellationTokenSource _cancelSource01 = new CancellationTokenSource();
  11. //static CancellationTokenSource _cancelSource02 = new CancellationTokenSource();
  12. public static void TaskThread(Action methodName, int millisecondsTimeout = 0)
  13. {
  14. var task = Task.Factory.StartNew(() =>
  15. {
  16. methodName();
  17. });
  18. if (millisecondsTimeout > 0)
  19. {
  20. task.Wait(millisecondsTimeout);
  21. }
  22. }
  23. public static void TaskThread<T>(Action<T> methodName, T param, int millisecondsTimeout = 0)
  24. {
  25. var task = Task.Factory.StartNew(() =>
  26. {
  27. methodName(param);
  28. });
  29. if (millisecondsTimeout > 0)
  30. {
  31. task.Wait(millisecondsTimeout);
  32. }
  33. }
  34. public static object TaskThread(Func<object> methodName)
  35. {
  36. var result = Task.Factory.StartNew(() =>
  37. {
  38. return methodName();
  39. });
  40. return result;
  41. }
  42. public static V TaskThread<T, V>(Func<T, V> methodName, T param, int millisecondsTimeout = 0)
  43. {
  44. var result = Task.Factory.StartNew(() =>
  45. {
  46. return methodName(param);
  47. });
  48. if (millisecondsTimeout > 0)
  49. {
  50. if (result.Wait(millisecondsTimeout))
  51. {
  52. return result.Result;
  53. }
  54. }
  55. return default(V);
  56. }
  57. }
  58. }