private Task OnImplicitlyActivated() { _isImplicitlyActiveSource.TrySetResult(); IEnumerable <Task> tasks = ImplicitlyActiveServices.Select(c => c.Value.ActivateAsync()); return(Task.WhenAll(tasks)); }
private Task OnImplicitlyDeactivated() { var source = new TaskCompletionSource(); // Make sure the writes in constructor don't // move to after we publish the value Thread.MemoryBarrier(); _isImplicitlyActiveSource = source; IEnumerable <Task> tasks = ImplicitlyActiveServices.Select(c => c.Value.DeactivateAsync()); return(Task.WhenAll(tasks)); }