public async Task InvokeMethod_AfterStart() { var firstTickTaskSource = new TaskCompletionSource <object?>(); var firstTickPassed = false; var backgroundLoop = new BackgroundLoop(string.Empty, 500); backgroundLoop.Tick += (_, _) => { if (!firstTickPassed) { firstTickPassed = true; firstTickTaskSource.TrySetResult(null); } }; await backgroundLoop.StartAsync(); await firstTickTaskSource.Task; var methodInvoked = false; await backgroundLoop.InvokeAsync(() => methodInvoked = true); await backgroundLoop.StopAsync(5000); Assert.IsTrue(methodInvoked, nameof(methodInvoked)); }
public async Task InvokeMethod_BeforeStart() { var backgroundLoop = new BackgroundLoop(string.Empty, 500); var methodInvoked = false; var invokeTask = backgroundLoop.InvokeAsync(() => methodInvoked = true); await backgroundLoop.StartAsync(); await invokeTask; await backgroundLoop.StopAsync(5000); Assert.IsTrue(methodInvoked, nameof(methodInvoked)); }