本文整理汇总了C#中IOperation.Execute方法的典型用法代码示例。如果您正苦于以下问题:C# IOperation.Execute方法的具体用法?C# IOperation.Execute怎么用?C# IOperation.Execute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOperation
的用法示例。
在下文中一共展示了IOperation.Execute方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FaceSearchController
public FaceSearchController(
IFrameStream source,
IOperation<Frame> frameProcessor,
IConvertor<Frame, Portrait> convertor,
IOperation<Portrait> portraitProcessor)
{
_source = source;
_frameProcessor = frameProcessor;
_convertor = convertor;
_portraitProcessor = portraitProcessor;
_worker.DoWork = delegate
{
var frames = frameProcessor.Execute(null).ToList();
var portraits = _convertor.Execute(frames).ToList();
var portraitsAfterProcess = _portraitProcessor.Execute(portraits).ToList();
foreach (var portrait in portraitsAfterProcess)
{
portrait.Dispose();
}
};
_worker.OnExceptionRetry = () => _source.Connect();
}
示例2: OperateWithFailover
/// <summary>
/// Performs the operation and retries in in case the class is configured for
/// retries, and there are enough hosts to try and the error was
/// </summary>
/// <param name="op"></param>
void OperateWithFailover(IOperation op)
{
int retries = Math.Min((int)FailoverPolicy.RetryCount + 1, knownHosts.Count);
try
{
while (retries > 0)
{
--retries;
// log.debug("Performing operation on {}; retries: {}", client.getUrl(), retries);
try
{
op.Execute(cassandra);
// hmmm don't count success, there are too many...
// monitor.incCounter(op.successCounter);
// log.debug("Operation succeeded on {}", client.getUrl());
}
catch (Apache.Cassandra.TimedOutException)
{
// log.warn("Got a TimedOutException from {}. Num of retries: {}", client.getUrl(), retries);
if (retries == 0)
throw;
else
{
SkipToNextHost();
monitor.IncrementCounter(ClientCounter.RECOVERABLE_TIMED_OUT_EXCEPTIONS);
}
}
catch (Apache.Cassandra.UnavailableException)
{
// log.warn("Got a UnavailableException from {}. Num of retries: {}", client.getUrl(),
// retries);
if (retries == 0)
throw;
else
{
SkipToNextHost();
monitor.IncrementCounter(ClientCounter.RECOVERABLE_UNAVAILABLE_EXCEPTIONS);
}
}
catch (TTransportException)
{
// log.warn("Got a TTransportException from {}. Num of retries: {}", client.getUrl(),
// retries);
if (retries == 0)
throw;
else
{
SkipToNextHost();
monitor.IncrementCounter(ClientCounter.RECOVERABLE_TRANSPORT_EXCEPTIONS);
}
}
}
}
catch (Apache.Cassandra.InvalidRequestException ex)
{
monitor.IncrementCounter(op.FailCounter);
throw new InvalidRequestException(ex.__isset.why ? ex.Why : ex.Message, ex);
}
catch (Apache.Cassandra.UnavailableException ex)
{
monitor.IncrementCounter(op.FailCounter);
throw new UnavailableException(ex.Message, ex);
}
/*catch (TException e) {
monitor.incCounter(op.failCounter);
throw e;
} */
catch (Apache.Cassandra.TimedOutException ex)
{
monitor.IncrementCounter(op.FailCounter);
throw new TimedOutException(ex.Message, ex);
}
catch (PoolExhaustedException ex)
{
//log.warn("Pool is exhausted", e);
monitor.IncrementCounter(op.FailCounter);
monitor.IncrementCounter(ClientCounter.POOL_EXHAUSTED);
throw new UnavailableException(ex.Message, ex);
}
/*catch (IllegalStateException e) {
//log.error("Client Pool is already closed, cannot obtain new clients.", e);
monitor.incCounter(op.failCounter);
throw new UnavailableException();
} */
catch (Exception ex)
{
//log.error("Cannot retry failover, got an Exception", e);
monitor.IncrementCounter(op.FailCounter);
throw new UnavailableException(ex.Message, ex);
}
}
示例3: 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;
}
示例4: EnlistOperation
private static void EnlistOperation( IOperation operation )
{
if( enlistment == null && Transaction.Current != null )
{
enlistment = new TxfmEnlistment();
Transaction.Current.EnlistDurable( resourceManagerId, enlistment, EnlistmentOptions.None );
}
operation.Execute();
if( enlistment == null )
{
// Not in a transaction.
operation.Commit();
}
else
{
enlistment.AddOperation( operation );
}
}