public partial class PositionTotalsWindow3
{
public bool IsProcessTaskInUse { get; set; }
private void SetupProcessTask()
{
if (!IsProcessTaskInUse)
{
_evl.Evlm2(EvlResult.WARNING, EvlSubject.TECHNOLOGY, Name, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask Will NOT BE USED",
ToString());
return;
}
ProcessTask = new ProcessTask<IEventArgs>();
ProcessTask.Init(_evl);
// ProcessTask.Parent = this;
ProcessTask.TimeInterval = 1000;
ProcessTask.IsEveryItemPushProcessing = false;
ProcessTask.ItemsProcessingAction = InsertItemsIntoObserveCollection;
_evl.Evlm2(EvlResult.SUCCESS, EvlSubject.TECHNOLOGY, Name, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask IS USED NOW",
ProcessTask?.ToString());
}
private void InsertItemsIntoObserveCollection(IEnumerable<IEventArgs> args)
{
Dispatcher.BeginInvoke((ThreadStart)(() =>
{
foreach (var arg in args)
ProcessPosition(arg);
}
));
}
private void ProcessPosition(IEventArgs arg)
{
var ip = arg?.Object as IPosition2;
if (ip == null)
return;
PositionTotalNpc2 p;
switch (arg.OperationKey)
{
case "UI.POSITIONS.TOTAL.INSERT":
p = new PositionTotalNpc2(ip);
PositionCollection.Insert(0, p);
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.ADD":
case "UI.POSITIONS.TOTAL.ADD.TOEND":
p = new PositionTotalNpc2(ip);
PositionCollection.Add(p);
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.ADDNEW":
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
if (p == null)
PositionCollection.Add(new PositionTotalNpc2(ip));
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.DELETE":
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
if (p != null)
PositionCollection.Remove(p);
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.UPDATE":
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
p?.Update(ip);
break;
case "UI.POSITIONS.TOTAL.ADDORUPDATE":
try
{
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
if (p != null)
p.Update(ip);
else
PositionCollection.Add(new PositionTotalNpc2(ip));
this.Title = "Totals ( " + PositionCollection.Count + " )";
}
catch (Exception e)
{
_tx.SendExceptionMessage3("TotalsWindow", "Position2", "AddOrUpdate", ip.ToString(), e);
}
break;
}
}
[XmlIgnore]
public GS.ProcessTasks.ProcessTask<IEventArgs> ProcessTask { get; private set; }
public void Start()
{
if (IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
}
{
public bool IsProcessTaskInUse { get; set; }
private void SetupProcessTask()
{
if (!IsProcessTaskInUse)
{
_evl.Evlm2(EvlResult.WARNING, EvlSubject.TECHNOLOGY, Name, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask Will NOT BE USED",
ToString());
return;
}
ProcessTask = new ProcessTask<IEventArgs>();
ProcessTask.Init(_evl);
// ProcessTask.Parent = this;
ProcessTask.TimeInterval = 1000;
ProcessTask.IsEveryItemPushProcessing = false;
ProcessTask.ItemsProcessingAction = InsertItemsIntoObserveCollection;
_evl.Evlm2(EvlResult.SUCCESS, EvlSubject.TECHNOLOGY, Name, Name,
MethodBase.GetCurrentMethod().Name, "ProcessTask IS USED NOW",
ProcessTask?.ToString());
}
private void InsertItemsIntoObserveCollection(IEnumerable<IEventArgs> args)
{
Dispatcher.BeginInvoke((ThreadStart)(() =>
{
foreach (var arg in args)
ProcessPosition(arg);
}
));
}
private void ProcessPosition(IEventArgs arg)
{
var ip = arg?.Object as IPosition2;
if (ip == null)
return;
PositionTotalNpc2 p;
switch (arg.OperationKey)
{
case "UI.POSITIONS.TOTAL.INSERT":
p = new PositionTotalNpc2(ip);
PositionCollection.Insert(0, p);
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.ADD":
case "UI.POSITIONS.TOTAL.ADD.TOEND":
p = new PositionTotalNpc2(ip);
PositionCollection.Add(p);
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.ADDNEW":
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
if (p == null)
PositionCollection.Add(new PositionTotalNpc2(ip));
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.DELETE":
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
if (p != null)
PositionCollection.Remove(p);
this.Title = "Totals ( " + PositionCollection.Count + " )";
break;
case "UI.POSITIONS.TOTAL.UPDATE":
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
p?.Update(ip);
break;
case "UI.POSITIONS.TOTAL.ADDORUPDATE":
try
{
p = PositionCollection.FirstOrDefault(po => po.Key == ip.Key);
if (p != null)
p.Update(ip);
else
PositionCollection.Add(new PositionTotalNpc2(ip));
this.Title = "Totals ( " + PositionCollection.Count + " )";
}
catch (Exception e)
{
_tx.SendExceptionMessage3("TotalsWindow", "Position2", "AddOrUpdate", ip.ToString(), e);
}
break;
}
}
[XmlIgnore]
public GS.ProcessTasks.ProcessTask<IEventArgs> ProcessTask { get; private set; }
public void Start()
{
if (IsProcessTaskInUse)
ProcessTask?.Start();
}
public void Stop()
{
if (IsProcessTaskInUse)
ProcessTask?.Stop();
}
}
Комментариев нет:
Отправить комментарий