/// <summary> /// 关闭或后退之前,返回false表示禁止关闭 /// </summary> /// <returns>true 表允许关闭</returns> internal async Task <bool> AllowClose() { if (Closing != null) { var args = new AsyncCancelEventArgs(); Closing(this, args); await args.EnsureAllCompleted(); if (args.Cancel) { return(false); } } return(await OnClosing()); }
public Deferral(AsyncCancelEventArgs p_owner) { _owner = p_owner; _taskSrc = new TaskCompletionSource <bool>(); _owner.AddTask(_taskSrc.Task); }