EventHelper.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Threading.Tasks;
  4. using Microsoft.Extensions.Logging;
  5. namespace MediaBrowser.Common.Events
  6. {
  7. // TODO: @bond Remove
  8. /// <summary>
  9. /// Class EventHelper
  10. /// </summary>
  11. public static class EventHelper
  12. {
  13. /// <summary>
  14. /// Fires the event.
  15. /// </summary>
  16. /// <param name="handler">The handler.</param>
  17. /// <param name="sender">The sender.</param>
  18. /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param>
  19. /// <param name="logger">The logger.</param>
  20. public static void QueueEventIfNotNull(EventHandler handler, object sender, EventArgs args, ILogger logger)
  21. {
  22. if (handler != null)
  23. {
  24. Task.Run(() =>
  25. {
  26. try
  27. {
  28. handler(sender, args);
  29. }
  30. catch (Exception ex)
  31. {
  32. logger.LogError(ex, "Error in event handler");
  33. }
  34. });
  35. }
  36. }
  37. /// <summary>
  38. /// Queues the event.
  39. /// </summary>
  40. /// <typeparam name="T"></typeparam>
  41. /// <param name="handler">The handler.</param>
  42. /// <param name="sender">The sender.</param>
  43. /// <param name="args">The args.</param>
  44. /// <param name="logger">The logger.</param>
  45. public static void QueueEventIfNotNull<T>(EventHandler<T> handler, object sender, T args, ILogger logger)
  46. {
  47. if (handler != null)
  48. {
  49. Task.Run(() =>
  50. {
  51. try
  52. {
  53. handler(sender, args);
  54. }
  55. catch (Exception ex)
  56. {
  57. logger.LogError(ex, "Error in event handler");
  58. }
  59. });
  60. }
  61. }
  62. }
  63. }