public void Cancellation() { var count = 0; ContainerLifecycle.CancellationToken.Register(() => count++); Task.Factory.StartNew(() => { Task.Delay(500).GetAwaiter().GetResult(); }).ContinueWith(t => { ContainerLifecycle.End(); }); try { Task.Delay(5000, ContainerLifecycle.CancellationToken).GetAwaiter().GetResult(); } catch (TaskCanceledException) { } Task.Delay(1000).GetAwaiter().GetResult(); Assert.IsTrue(ContainerLifecycle.CancellationToken.IsCancellationRequested, "Cancellation token was not triggered"); Assert.IsTrue(count == 1, "Count was not expected"); }
public void TaskDelay() { var count = 0; ContainerLifecycle.CancellationToken.Register(() => count++); Task.Factory.StartNew(() => { Task.Delay(500).GetAwaiter().GetResult(); }).ContinueWith(t => { ContainerLifecycle.End(); }); var taskCompleted = Task.WhenAny(ContainerLifecycle.Task, Task.Delay(5000, ContainerLifecycle.CancellationToken)).GetAwaiter().GetResult(); Assert.IsTrue(ContainerLifecycle.Task.IsCompleted, "Cancellation token was not triggered"); Assert.IsTrue(taskCompleted.Id == ContainerLifecycle.Task.Id, "Task id completed as expected"); }
private ILifecycle GetLifecycle(RegistrationLifestyle lifestyle) { ILifecycle lifecycle = null; switch (lifestyle) { case RegistrationLifestyle.Singleton: lifecycle = new SingletonLifecycle(); break; case RegistrationLifestyle.SingletonPerScope: lifecycle = new ContainerLifecycle(); break; case RegistrationLifestyle.SingletonPerObjectGraph: case RegistrationLifestyle.Transient: lifecycle = new TransientLifecycle(); break; } return(lifecycle); }