StartupTrigger.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using System;
  2. using System.Threading.Tasks;
  3. using MediaBrowser.Model.Tasks;
  4. using Microsoft.Extensions.Logging;
  5. namespace Emby.Server.Implementations.ScheduledTasks.Triggers;
  6. /// <summary>
  7. /// Class StartupTaskTrigger.
  8. /// </summary>
  9. public sealed class StartupTrigger : ITaskTrigger
  10. {
  11. private const int DelayMs = 3000;
  12. /// <summary>
  13. /// Initializes a new instance of the <see cref="StartupTrigger"/> class.
  14. /// </summary>
  15. /// <param name="taskOptions">The options of this task.</param>
  16. public StartupTrigger(TaskOptions taskOptions)
  17. {
  18. TaskOptions = taskOptions;
  19. }
  20. /// <inheritdoc />
  21. public event EventHandler<EventArgs>? Triggered;
  22. /// <inheritdoc />
  23. public TaskOptions TaskOptions { get; }
  24. /// <inheritdoc />
  25. public async void Start(TaskResult? lastResult, ILogger logger, string taskName, bool isApplicationStartup)
  26. {
  27. if (isApplicationStartup)
  28. {
  29. await Task.Delay(DelayMs).ConfigureAwait(false);
  30. OnTriggered();
  31. }
  32. }
  33. /// <inheritdoc />
  34. public void Stop()
  35. {
  36. }
  37. /// <summary>
  38. /// Called when [triggered].
  39. /// </summary>
  40. private void OnTriggered()
  41. {
  42. Triggered?.Invoke(this, EventArgs.Empty);
  43. }
  44. }