common/CordonelPreadjustmentUi/Processes/Actions/FlushProcess.cs
2026-04-23 17:50:07 +02:00

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;
}
}
}