예제 #1
0
        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));
        }
예제 #2
0
        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));
        }