Ejemplo n.º 1
0
        public async void Test_NotDisposeAfterActionMore()
        {
            var vcs1      = new CancellationTokenSource();
            var container = vcs1.NewContainer("vcs1")
                            .SetDiposeAfterAction(false);

            container.AddSource("cs1");
            container.AddSource("cs2");
            container.AddSecondsTimeOut(1, "timeout1");
            try
            {
                await CancellationContainer.Delay(-1, container);
            }
            catch (Exception ex)
            {
                Assert.True(ex is OperationCanceledException);
            }
            container["cs1"].Source.Cancel();
            container["cs2"].Source.Cancel();

            Assert.Equal(3, container.CanceledItems.Count);
            Assert.NotEmpty(container.Items);

            Assert.True(container["timeout1"].Token.IsCancellationRequested);

            container.Dispose();
        }
Ejemplo n.º 2
0
        public async void Cointainer_WithSecondsTimeOut()
        {
            using var container = new CancellationContainer();
            container.AddSource("cts1");
            container.AddSecondsTimeOut(2, "timeout");
            _ = Task.Run(async() =>
            {
                await Task.Delay(TimeSpan.FromSeconds(5), container.Token);
                if (!container["timeout"].Token.IsCancellationRequested)
                {
                    container["cts1"].Source.Cancel();
                }
            }, container.Token);
            try
            {
                await Task.Delay(-1, container.Token);

                AssertSomethingWentWrong();
            }
            catch (Exception ex)
            {
                Assert.True(ex is OperationCanceledException);
            }
            Assert.True(container["timeout"].Token.IsCancellationRequested);
        }
Ejemplo n.º 3
0
 public async Task <bool> WaitAsync(CancellationContainer cancellationContainer)
 {
     try
     {
         return(await WaitAsync(cancellationContainer.Token).ConfigureAwait(false));
     }
     finally
     {
         cancellationContainer.DisposeAfterAction();
     }
 }
Ejemplo n.º 4
0
 public static async Task Delay(TimeSpan delay, CancellationContainer cancellationContainer)
 {
     try
     {
         await Task.Delay(delay, cancellationContainer.Token).ConfigureAwait(false);
     }
     finally
     {
         cancellationContainer.DisposeAfterAction();
     }
 }
Ejemplo n.º 5
0
        public async void Test_DisposeAfterAction()
        {
            var vcs1      = new CancellationTokenSource();
            var container = vcs1.NewContainer("vcs1");

            container.AddSource("cs1");
            container.AddSource("cs2");
            container.AddSecondsTimeOut(1, "timeout1");
            try
            {
                await CancellationContainer.Delay(-1, container);
            }
            catch (Exception ex)
            {
                Assert.True(ex is OperationCanceledException);
            }
            Assert.Empty(container.Items);
        }
Ejemplo n.º 6
0
 public static Task WaitUntil(CancellationContainer cancellationContainer)
 => Delay(-1, cancellationContainer);
Ejemplo n.º 7
0
 public static Task WaitUntil(int millisecondsDelay, CancellationContainer cancellationContainer)
 => Delay(millisecondsDelay, cancellationContainer);
Ejemplo n.º 8
0
 public static Task WaitUntil(TimeSpan delay, CancellationContainer cancellationContainer)
 => Delay(delay, cancellationContainer);
Ejemplo n.º 9
0
 public static Task Delay(int millisecondsDelay, CancellationContainer cancellationContainer)
 => Delay(TimeSpan.FromMilliseconds(millisecondsDelay), cancellationContainer);