61 lines
1.8 KiB
C#
61 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics.Eventing.Reader;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using CordonelPreadjustmentUi.Processes.Itinerary;
|
|
using System.Threading;
|
|
using static CordonelPreadjustmentUi.PreAdjustmentControl;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace CordonelPreadjustmentUi.Processes.Actions
|
|
{
|
|
public class FlushProcess : BaseProcess
|
|
{
|
|
public FlushProcess(string processName, StatusPanelItems panelState, string performMessage, string failedMessage, int? expectedTimeS) : base(processName, panelState, performMessage, failedMessage, expectedTimeS)
|
|
{
|
|
}
|
|
|
|
public override List<Task> StartWork()
|
|
{
|
|
return doWorkProcess(base.CurrentProcessProgress);
|
|
}
|
|
|
|
private List<Task> doWorkProcess(ProcessProgress pp)
|
|
{
|
|
var MetersToProcess = MeterStateCtls.Where(e => e.IsEnabled).ToList();
|
|
|
|
var listOfProcessTask = new List<Task>();
|
|
|
|
listOfProcessTask.Add(new Task<bool>(() =>
|
|
{
|
|
pp.DebugMessage($"Performing {ProcessName} procedure", null, "APP");
|
|
pp.RequestFlush(pp.Setting.MeterSize);
|
|
var FlushTimeOut = DateTimeOffset.UtcNow.AddMinutes(5);
|
|
|
|
while (!pp.FlushDone)
|
|
{
|
|
if (FlushTimeOut < DateTimeOffset.UtcNow)
|
|
{
|
|
pp.DebugMessage($"Flush time out!", null, "APP");
|
|
break;
|
|
}
|
|
Thread.Sleep(1000);
|
|
}
|
|
var doneTime = DateTime.UtcNow.AddMinutes(1);
|
|
while (DateTime.UtcNow > doneTime)
|
|
{ Thread.Sleep(1000); }
|
|
return true;
|
|
}));
|
|
|
|
|
|
return listOfProcessTask;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|