Here is example how to use ProcessTask (with IdleCycleAction inUse)
public sealed partial class QuikTradeTerminal
{
public bool IsProcessTaskInUse { get; set; }
[XmlIgnore]
public ProcessTask<IEventArgs1> ProcessTask { get; private set; }
private void SetupProcessTask()
{
if (!IsProcessTaskInUse)
{
Evlm2(EvlResult.WARNING, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask Will NOT BE USED",
ToString());
return;
}
ProcessTask = new ProcessTask<IEventArgs1>();
ProcessTask.Init();
ProcessTask.TimeInterval = 1000;
ProcessTask.Parent = this;
ProcessTask.IsEveryItemPushProcessing = true;
//ProcessTask.ItemProcessingAction = args =>
//{
// try
// {
// args.ProcessingAction(args);
// }
// catch (Exception e)
// {
// SendException(e);
// }
//};
ProcessTask.ItemProcessingAction = ItemProcessingAction;
ProcessTask.IdlingCycleAction = ProcessTaskAdditionalWork;
Evlm2(EvlResult.SUCCESS, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask IS USED NOW",
ProcessTask?.ToString());
}
public void Start()
{
SetupProcessTask();
if(IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
// ************************************************
// ProcessTask Actions
private void ItemProcessingAction(IEventArgs1 args)
{
try
{
args.ProcessingAction(args);
}
catch (Exception e)
{
SendException(e);
}
}
// AdditionalWorks in IdlingCycleAction
private void ProcessTaskAdditionalWork()
{
TradeResolveProcess();
OrderResolveProcess();
}
}
public sealed partial class QuikTradeTerminal
{
public bool IsProcessTaskInUse { get; set; }
[XmlIgnore]
public ProcessTask<IEventArgs1> ProcessTask { get; private set; }
private void SetupProcessTask()
{
if (!IsProcessTaskInUse)
{
Evlm2(EvlResult.WARNING, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask Will NOT BE USED",
ToString());
return;
}
ProcessTask = new ProcessTask<IEventArgs1>();
ProcessTask.Init();
ProcessTask.TimeInterval = 1000;
ProcessTask.Parent = this;
ProcessTask.IsEveryItemPushProcessing = true;
//ProcessTask.ItemProcessingAction = args =>
//{
// try
// {
// args.ProcessingAction(args);
// }
// catch (Exception e)
// {
// SendException(e);
// }
//};
ProcessTask.ItemProcessingAction = ItemProcessingAction;
ProcessTask.IdlingCycleAction = ProcessTaskAdditionalWork;
Evlm2(EvlResult.SUCCESS, EvlSubject.TECHNOLOGY, ParentName, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask IS USED NOW",
ProcessTask?.ToString());
}
public void Start()
{
SetupProcessTask();
if(IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
// ************************************************
// ProcessTask Actions
private void ItemProcessingAction(IEventArgs1 args)
{
try
{
args.ProcessingAction(args);
}
catch (Exception e)
{
SendException(e);
}
}
// AdditionalWorks in IdlingCycleAction
private void ProcessTaskAdditionalWork()
{
TradeResolveProcess();
OrderResolveProcess();
}
}
Комментариев нет:
Отправить комментарий