Skip to main content
.NET 8.0+

XPObjectSpace.CommitChangesAsync(CancellationToken) Method

Asynchronously saves all the changes made to the persistent objects belonging to the current Object Space to the database.

Namespace: DevExpress.ExpressApp.Xpo

Assembly: DevExpress.ExpressApp.Xpo.v24.2.dll

NuGet Package: DevExpress.ExpressApp.Xpo

Declaration

public Task CommitChangesAsync(
    CancellationToken cancellationToken = default(CancellationToken)
)

Optional Parameters

Name Type Default Description
cancellationToken CancellationToken null

A CancellationToken object that delivers a cancellation notice to the running operation.

Returns

Type Description
Task

A Task object.

Remarks

The following code demonstrates how you can use this method in a WinForms-specific View Controller.

using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
using DevExpress.ExpressApp.Win;
using DevExpress.ExpressApp.Xpo;
using DevExpress.Persistent.Base;
using DevExpress.XtraSplashScreen;
using System.Threading;
using System.Windows.Forms; 
// ...
public class AsyncChangeDueDateController : ObjectViewController<DetailView, DemoTask> {
    public AsyncChangeDueDateController() {
        SimpleAction changeDueDateAction =
            new SimpleAction(this, "ChangeDueDate", PredefinedCategory.Edit);
        changeDueDateAction.SelectionDependencyType = SelectionDependencyType.RequireSingleObject;
        changeDueDateAction.Execute += ChangeDueDateAction_Execute;
    }
    async private void ChangeDueDateAction_Execute(object sender, SimpleActionExecuteEventArgs e) {
        IOverlaySplashScreenHandle handle = null;
        Control control = Frame.Template as Control;
        WinApplication application = Application as WinApplication;
        CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
        ViewCurrentObject.DueDate = new System.DateTime(2019,10,21);
        try {
            if (control != null && control.IsHandleCreated) {
                handle = application.StartOverlayForm(control);
            }
            await ((XPObjectSpace)ObjectSpace).CommitChangesAsync(cancellationTokenSource.Token);
        }
        finally {
            if (handle != null) {
                application.StopOverlayForm(handle);
            }
        }
    }
}

In the current example, the cancellationToken parameter is used for demonstration purposes. You can skip it or use to cancel an asynchronous operation as shown in the CancellationToken topic.

See Also