Я делаю консольное приложение, которое позже станет сервисным приложением Windows через Topshelf.
Я борюсь с таймерами, я устанавливаю таймер с автосбросом на 20 секунд. Когда я запускаю таймер, он работает. И когда я останавливаю его, он останавливается.
Теперь перейдем к проблеме, я хочу сохранить значение при остановке.
Мне нужен обработчик событий, как предлагает Timer. Но мне также нужен способ, который запоминает время, как секундомер. какой я должен выбрать? У меня есть доступ к серверу SQL и я его сохраняю.
Допустим, я позволил ему работать в течение 10 секунд, так как автосброс истинен, когда я его останавливаю. А затем подождите, а затем снова запустите таймер.
На мой взгляд, в следующий раз, когда я запущу таймер, он должен работать только в течение 10 секунд. Таким образом, общее время, за которое запускается событие, составляет 20 секунд, а не 30.
Есть ли способ «сэкономить» прошедшее время?
public class MySampleClient
{
System.Timers.Timer BatchTimer;
public MySampleClient()
{
BatchTimer = new System.Timers.Timer(BatchSampleTimer) { AutoReset = true };
}
public async Task startSession()
{
BatchTimer.Elapsed += BatchTimerVoid;
}
public void BatchIDTrigger(BatchTagDataModel btdm)
{
string btdmValue = btdm.Value.ToLower();
if (batchNumberTimerControllerList.Contains(btdm.DisplayName))
{
if (btdmValue == "true")
{
BatchTimer.Start();
}
else
{
BatchTimer.Stop();
}
}
}
public void BatchTimerVoid(Object source, System.Timers.ElapsedEventArgs e)
{
// Something happens here every 20 seconds.
}
}