EventHelper.cs 2.0 KB

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