Catel.MVVM.ViewModelBase.CancelViewModelAsync C# (CSharp) Method

CancelViewModelAsync() public method

Cancels the editing of the data.
public CancelViewModelAsync ( ) : Task
return Task
        public async Task<bool> CancelViewModelAsync()
        {
            if (IsClosing || IsClosed)
            {
                return false;
            }

            IsCanceling = true;

            var eventArgs = new CancelingEventArgs();
            Canceling.SafeInvoke(this, eventArgs);
            await CancelingAsync.SafeInvokeAsync(this, eventArgs);

            if (eventArgs.Cancel)
            {
                Log.Info("Canceling of view model '{0}' is canceled via the Canceling event", GetType());
                IsCanceling = false;
                return false;
            }

            var cancel = await CancelAsync();

            Log.Info(cancel ? "Canceled view model '{0}'" : "Failed to cancel view model '{0}'", GetType());
            if (!cancel)
            {
                IsCanceling = false;
                return false;
            }

            lock (_modelLock)
            {
                foreach (var modelKeyValuePair in _modelObjects)
                {
                    UninitializeModelInternal(modelKeyValuePair.Key, modelKeyValuePair.Value, ModelCleanUpMode.CancelEdit);
                }
            }

            Log.Info("Canceled view model '{0}'", GetType());

            Canceled.SafeInvoke(this);
            await CanceledAsync.SafeInvokeAsync(this);

            IsCanceling = false;

            return true;
        }