53 lines
1.2 KiB
C#
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);
|
|
}
|
|
} |