В этой статье вы узнаете, как реализовать прикладной метод с использованием сервиса Управляемых Операций. Мы разработаем класс SimpleOperation с методом ExecuteCore и обеспечим выполнение этого метода в рамках синхронной Управляемой Операции с прогресс-баром. Запуск операции будет инициирован с помощью Simple Action startSimpleOperation. Затем мы рассмотрим, как отображать процесс выполнения другими способами. Выполните следующие шаги.

 

//...

using System.Threading;

using DevExpress.ExpressApp;

using Xafari.ManagedOperations;

 

//...

   [NonPersistent]

  class SimpleOperation

   {

      public int Count { get; set; }

      public int Timeout { get; set; }

 

      public SimpleOperation(XafApplication application)

       {

           Count = 10;

           Timeout = 3;

       }

 

      public void ExecuteCore(IManagedOperation operation)

       {

      operation.TotalStep = Count;

          for (int i = 0; i <= Count; i++)

           {

               operation.NextStep(string.Format("Stage {0}", i), i);

              Thread.Sleep(Timeout * 1000);

           }

       }

   }

 

//...

using DevExpress.ExpressApp;

using Xafari.ManagedOperations;

 

//...  

   public partial class StartManagedOperationViewController : ViewController

   {

  //...

      private void StartSimpleOperation_Execute(object sender, SimpleActionExecuteEventArgs e)

       {    

          var simpleOperation = new SimpleOperation(this.Application);

          var managedOperation = new ManagedOperation(this.Application)

           {

               ZoneType = ManagedOperationZoneTypes.Local,

               Name = "Managed operation with progress bar",

               ProcessCode = (simpleOperation.ExecuteCore),

           TotalStep = operation.Count,

           };

           managedOperation.Start();

      SyncManagedOperationHelper.CreateHelper(managedOperation).InitShowViewParametersProgress(e.ShowViewParameters, false);

       }

  //...

   }

Замечание:

На панели инструментов ManagedOperationStorage_ListView следует выбрать локальный тип (Local) отображаемых операций.

Win:

Вы можете найти код, используемый в этой статье, в файлах Operation1.cs и SyncManagedOperationsWindowController.cs (SyncProgress_Execute method) демо-приложения Xafari Northwind, установленного вместе с Xafari.

Замечание:

В рассмотренном примере ход выполнения синхронной Управляемой Операции отображался с помощью прогресс-бара. Кроме прогресс-бара можно использовать индикатор бесконечной прокрутки либо Detail View выполняемой операции. Соответствующие примеры содержаться в демо-приложении Xafari Northwind.

Способ отображения предоставляется классом SyncManagedOperationHelper и может быть изменен в обработчике события StartSimpleOperation_Execute (см. код выше).

 SyncManagedOperationHelper.CreateHelper(managedOperation).InitShowViewParametersMarquee(e.ShowViewParameters, true);

 SyncManagedOperationHelper.CreateHelper(managedOperation).InitShowViewParameters(e.ShowViewParameters, false);

Замечание:

Мы рассмотрели пример создания синхронной Управляемой Операции. Асинхронная Управляемая Операция предоставляет конечному пользователю больше возможностей по контролю за ходом выполнения. Примеры таких операций включены в демо-приложение Xafari Northwind.

В статье Возможности разработчика вы можете узнать, как создать асинхронную Управляемую Операцию.