43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
using System;
|
||
using System.Threading;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace DTLib
|
||
{
|
||
//
|
||
// простой и понятный класс для выполнения каких-либо действий в отдельном потоке раз в некоторое время
|
||
//
|
||
public class Timer
|
||
{
|
||
Task TimerTask;
|
||
bool Repeat;
|
||
CancellationTokenSource кансель = new();
|
||
|
||
// таймер сразу запускается
|
||
public Timer(bool repeat, int delay, Action method)
|
||
{
|
||
Repeat=repeat;
|
||
TimerTask=new Task(() =>
|
||
{
|
||
do
|
||
{
|
||
if(кансель.Token.IsCancellationRequested)
|
||
return;
|
||
Task.Delay(delay).Wait();
|
||
method();
|
||
} while(Repeat);
|
||
});
|
||
}
|
||
|
||
|
||
public void Start() => TimerTask.Start();
|
||
|
||
// завершение потока
|
||
public void Stop()
|
||
{
|
||
Repeat=false;
|
||
кансель.Cancel();
|
||
}
|
||
}
|
||
}
|