IObjectSpaceAsync.CommitChangesAsync(CancellationToken) Method
Asynchronously saves all the changes made to the persistent objects that belong to the current Object Space to the database.
Namespace: DevExpress.ExpressApp
Assembly: DevExpress.ExpressApp.v24.1.dll
NuGet Package: DevExpress.ExpressApp
Declaration
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