SCRUM-Timer/SCRUM-Timer/CountdownTimer.cs

53 lines
1.2 KiB
C#

using System;
using System.Threading;
namespace SCRUM_Timer;
public class CountdownTimer
{
public TimeSpan ActualTime { get; private set; }
public bool isRunning;
private Thread timerThread;
public event EventHandler<TimeSpan>? TimeChanged;
public CountdownTimer()
{
ActualTime = new TimeSpan(0, 5, 0);
isRunning = false;
}
public void StartStop()
{
if (!isRunning)
{
timerThread = new Thread(TimerTick);
timerThread.Start();
isRunning = true;
Console.WriteLine("Timer is running");
}
else
{
isRunning = false;
Console.WriteLine("Timer is stopped");
}
}
private void TimerTick()
{
TimeSpan tickTime = new TimeSpan(0,0,1);
while (isRunning)
{
ActualTime = ActualTime.Subtract(tickTime);
TimeChanged?.Invoke(this, ActualTime);
Console.WriteLine(ActualTime);
Thread.Sleep(1000);
}
}
public void AddTime(TimeSpan time)
{
ActualTime = ActualTime.Add(time);
TimeChanged?.Invoke(this, ActualTime);
}
}