/// <summary> /// Creates an instance that is registered with the ASP.NET runtime. /// </summary> public RegisteredTasks() { // Start the count at 1 and decrement it when ASP.NET notifies us we're shutting down. _shutdown = new CancellationTokenSource(); _count = new AsyncCountdownEvent(1); _shutdown.Token.Register(() => _count.Signal(), useSynchronizationContext: false); // Register the object. HostingEnvironment.RegisterObject(this); // When the count reaches zero (all tasks have completed and ASP.NET has notified us we are shutting down), // then unregister this object, and then the _done task is completed. _done = _count.WaitAsync().ContinueWith( _ => HostingEnvironment.UnregisterObject(this), CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, TaskScheduler.Default); }
public DebugView(AsyncCountdownEvent ce) { _ce = ce; }