ArcGIS Pro 3.7 API Reference Guide
ArcGIS.Desktop.Framework Namespace / OperationManager Class / UndoAsync Method / UndoAsync() Method
Example

In This Topic
    UndoAsync() Method
    In This Topic
    Rolls back the most recent operation to reset the last action performed with ArcGIS.Desktop.Framework.Contracts.Operation.Do or ArcGIS.Desktop.Framework.Contracts.Operation.DoAsync.
    Syntax
    Public Overloads Overridable Function UndoAsync() As Task
    public virtual Task UndoAsync()

    Return Value

    A task that represents the work queued to execute in the ThreadPool.
    Exceptions
    ExceptionDescription
    Thrown when the operation's ArcGIS.Desktop.Framework.Contracts.Operation.CanUndo method returns false.
    Remarks

    The most recent operation in the stack is undone by calling its ArcGIS.Desktop.Framework.Contracts.Operation.UndoAsync method. The operation is then added to this OperationManager's redo stack.

    Example
    Undo/Redo Edit Operations
    // Executes an edit operation and demonstrates how to undo the operation programmatically.
    await QueuedTask.Run(() =>
    {
      var editOp = new EditOperation
      {
        Name = "My Name"
      };
      if (!editOp.IsEmpty)
      {
        //Execute and ExecuteAsync will return true if the operation was successful and false if not
        var result = editOp.Execute();
        if (result == true)
        {
          // If the operation was successful, you can undo it
          editOp.UndoAsync();
        }
      }
    });
    Undo/Redo the Most Recent Operation
    // Demonstrates how to undo and redo the most recent operation using the map's operation manager.
      //undo
      if (activeMap.OperationManager.CanUndo)
        activeMap.OperationManager?.UndoAsync();//await as needed
    
      //redo
      if (MapView.Active.Map.OperationManager.CanRedo)
        activeMap.OperationManager?.RedoAsync();//await as needed
    }
    Dockpane undo / redo
    {
      // in order to find a dockpane you need to know its DAML id
      pane = FrameworkApplication.DockPaneManager.Find(dockPaneID);
    
      // get the undo stack
      OperationManager manager = pane.OperationManager;
      if (manager != null)
      {
        // undo an operation
        // Use await with UndoAsync and RedoAsync
        if (manager.CanUndo)
          manager.UndoAsync().Wait();
    
        // redo an operation
        if (manager.CanRedo)
          manager.RedoAsync().Wait();
    
        // clear the undo and redo stack of operations of a particular category
        manager.ClearUndoCategory("Some category");
        manager.ClearRedoCategory("Some category");
      }
    }
    Requirements

    Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)

    ArcGIS Pro version: 3.0 or higher.
    See Also