/// <summary> /// Raises the Closing event with a deferral to wait the event handlers to complete the execution. /// </summary> /// <returns></returns> protected virtual Task OnClosingAsync() { if (!_closingInvoked) { _closingInvoked = true; var e = new DeferralEventArgs(); Closing.RaiseEvent(this, e); return(e.WaitForDeferralsAsync()); } return(Task.FromResult <object>(null)); }