Exemple #1
0
        /// <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());
        }
Exemple #2
0
 public Deferral(AsyncCancelEventArgs p_owner)
 {
     _owner   = p_owner;
     _taskSrc = new TaskCompletionSource <bool>();
     _owner.AddTask(_taskSrc.Task);
 }