FakeApplicationLifecycle.cs 693 B

123456789101112131415161718192021
  1. #nullable enable
  2. namespace Terminal.Gui.Drivers;
  3. /// <summary>
  4. /// Implements a fake application lifecycle for testing purposes. Cleans up the application on dispose by cancelling
  5. /// the provided <see cref="CancellationTokenSource"/> and shutting down the application.
  6. /// </summary>
  7. /// <param name="origApp"></param>
  8. /// <param name="hardStop"></param>
  9. internal class FakeApplicationLifecycle (IApplication origApp, CancellationTokenSource hardStop) : IDisposable
  10. {
  11. /// <inheritdoc/>
  12. public void Dispose ()
  13. {
  14. hardStop.Cancel ();
  15. Application.Top?.Dispose ();
  16. Application.Shutdown ();
  17. ApplicationImpl.ChangeInstance (origApp);
  18. }
  19. }