ThreadExtensions.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /**
  2. *
  3. * @date 2014-10-17
  4. *
  5. * @author 邓尹平
  6. *
  7. * @par 成员列表类 说明
  8. * 主要负责管理成员 提供搜索\排序和操作的方法
  9. *
  10. * @par 版权声明
  11. * 深圳市多元世纪信息技术有限公司 版权所有
  12. *
  13. * @see 使用此类时参照一些其他类可以写在这里
  14. *
  15. * @todo 该类有待完成的任务 一条条列出 完成一条删除一条
  16. *
  17. * @bug 该类已知的Bug一条条列出 完成一条删除一条
  18. *
  19. */
  20. using System;
  21. using System.Threading.Tasks;
  22. using System.Windows;
  23. namespace Muchinfo.PC.Common.Extensions
  24. {
  25. public static class ThreadExtensions
  26. {
  27. public static Task TryStartNew(this TaskFactory factory, Action action, Action actionBusy)
  28. {
  29. return factory.StartNew(() =>
  30. {
  31. try
  32. {
  33. action();
  34. }
  35. catch (Exception ex)
  36. {
  37. Application.Current.Dispatcher.BeginInvoke(new Action(() =>
  38. {
  39. throw ex;
  40. }));
  41. }
  42. finally
  43. {
  44. Application.Current.Dispatcher.BeginInvoke(new Action(() =>
  45. {
  46. if (actionBusy != null)
  47. actionBusy();
  48. }));
  49. }
  50. });
  51. }
  52. public static Task TryStartNew(this TaskFactory factory, Action action)
  53. {
  54. return factory.StartNew(() =>
  55. {
  56. try
  57. {
  58. action();
  59. }
  60. catch (Exception ex)
  61. {
  62. Application.Current.Dispatcher.BeginInvoke(new Action(() =>
  63. {
  64. throw new Exception(ex.Message);
  65. }));
  66. }
  67. });
  68. }
  69. }
  70. }