本文整理汇总了C#中IOperation.Dispose方法的典型用法代码示例。如果您正苦于以下问题:C# IOperation.Dispose方法的具体用法?C# IOperation.Dispose怎么用?C# IOperation.Dispose使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOperation
的用法示例。
在下文中一共展示了IOperation.Dispose方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
/// <summary>
/// Запустить одну операцию
/// </summary>
/// <param name="operation">Операция</param>
/// <exception cref="System.ArgumentNullException" />
public OperationObject Run(IOperation operation)
{
if (operation == null)
{
throw new ArgumentNullException("operation");
}
// Инициализация
var tokenSource = new CancellationTokenSource();
var operationObj = new OperationObject { OperationId = GetNewIndex() };
var interop = new OperationInterop(operationObj, tokenSource.Token);
// Chain :: Выполнение операции
var task = new Task(() =>
{
operationObj.Status = OperationStatus.Running;
operation.Execute(interop);
},
tokenSource.Token);
// Chain :: Обработка законченной операции
var chainEnd = task.ContinueWith(et =>
{
operationObj.Exception = et.Exception;
operationObj.Status = et.Status.ToOperationStatus();
operationObj.Progress = 100;
operation.Dispose();
if (!IsBeingWatched(operationObj))
{
Notifier.Notify("Операция #" + operationObj.OperationId, "Операция завершена", null);
}
});
// Обработка и запуск цепочки выполнения
AddOperation(operationObj);
AddUnit(operationObj.OperationId, new OperationUnit { CancellationTokenSource = tokenSource, ChainEndTask = chainEnd }, operation);
operationObj.Status = OperationStatus.Created;
operationObj.Name = operation.OperationInfo.Name;
task.Start();
return operationObj;
}