์ค๋์ .NET 6 ์์ ์ฌ์ฉํ ์ ์๋ PeriodicTimer
๋ฅผ ์๊ฐํฉ๋๋ค.
PeriodicTimer
๋ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ํ์ด๋จธ ํฑ์ ์ฒ๋ฆฌํ๋ ์ต์ ํ์ด๋จธ API ์
๋๋ค. ๋ค์์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ณ ์,
var timer = new PeriodicTimer(TimeSpan.FromSeconds(1));
while (await timer.WaitForNextTickAsync())
{
Console.WriteLine(DateTime.Now);
}
1์ด ๊ฐ๊ฒฉ์ผ๋ก ์คํ๋๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
| ์คํ ๊ฒฐ๊ณผ
2021-11-18 ์คํ 11:14:17
2021-11-18 ์คํ 11:14:18
2021-11-18 ์คํ 11:14:19
2021-11-18 ์คํ 11:14:20
2021-11-18 ์คํ 11:14:21
์ผํ ๋ณด๋ฉด Task.Delay()
์ ๊ธฐ๋ฅ๊ณผ ๋ณ๋ฐ ์ฐจ์ด๊ฐ ์์ด ๋ณด์ด์ฃ ? ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๋ค์์ ์ฝ๋๋ฅผ ๋ณด์์ฃ .
var timer = new PeriodicTimer(TimeSpan.FromSeconds(2));
while (await timer.WaitForNextTickAsync())
{
Console.WriteLine($"Wake Up!: {DateTime.Now}");
// 1500 ms ์์๋๋ ์ฒ๋ฆฌ๊ฐ ๋ฐ์ํ๋ค๊ณ ๊ฐ์
Thread.Sleep(1500);
}
| ์คํ ๊ฒฐ๊ณผ
Wake Up!: 2021-11-18 ์คํ 11:18:56
Wake Up!: 2021-11-18 ์คํ 11:18:58
Wake Up!: 2021-11-18 ์คํ 11:19:00
Wake Up!: 2021-11-18 ์คํ 11:19:02
Wake Up!: 2021-11-18 ์คํ 11:19:04
๊ฐ์ ๋ก 1500 ms ๋งํผ์ ๋๋ ์ด๋ฅผ ์คฌ์์๋ ๋ถ๊ตฌํ๊ณ ์ง์ ํ period
๋งํผ์ ํ์ด๋จธ ํฑ์ ์ ๊ณตํฉ๋๋ค.
ํ์ด๋จธ ๋์ ์ค ์ทจ์ํ๋ ๊ธฐ๋ฅ์ด ์์๊น์? WaitForNextTickAsync(cancellationToken)
๋ฅผ ํตํด ์ทจ์๋ ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง ์ข ๋ ์ฝ๊ฒ ์ทจ์ํ๋ ๋ฐฉ๋ฒ์ timer
๋ฅผ Dispose
ํ๋ ๊ฒ์
๋๋ค.
using System.Diagnostics;
var timer = new PeriodicTimer(TimeSpan.FromSeconds(2));
var task = Task.Run(async () =>
{
var sw = Stopwatch.StartNew();
while (await timer.WaitForNextTickAsync())
{
Console.WriteLine($"Wake Up!: {DateTime.Now} {sw.ElapsedMilliseconds}");
// 1500 ms ์์๋๋ ์ฒ๋ฆฌ๊ฐ ๋ฐ์ํ๋ค๊ณ ๊ฐ์
Thread.Sleep(1500);
sw.Restart();
}
Console.WriteLine("ํ์ด๋จธ๊ฐ ์ข
๋ฃ๋์์ต๋๋ค.");
});
Console.WriteLine("์ํฐ๋ฅผ ๋๋ฅด๋ฉด ํ์ด๋จธ๋ฅผ ์ข
๋ฃํฉ๋๋ค.");
Console.ReadLine();
timer.Dispose();
Console.WriteLine("์ํฐ๋ฅผ ๋๋ฅด๋ฉด ์ข
๋ฃํฉ๋๋ค.");
Console.ReadLine();
| ์คํ ๊ฒฐ๊ณผ
์ํฐ๋ฅผ ๋๋ฅด๋ฉด ํ์ด๋จธ๋ฅผ ์ข
๋ฃํฉ๋๋ค.
Wake Up!: 2021-11-18 ์คํ 11:21:59 2014
Wake Up!: 2021-11-18 ์คํ 11:22:01 483
Wake Up!: 2021-11-18 ์คํ 11:22:03 484
Wake Up!: 2021-11-18 ์คํ 11:22:05 484
Wake Up!: 2021-11-18 ์คํ 11:22:07 485
Wake Up!: 2021-11-18 ์คํ 11:22:09 486
Wake Up!: 2021-11-18 ์คํ 11:22:11 496
Wake Up!: 2021-11-18 ์คํ 11:22:13 486
์ํฐ๋ฅผ ๋๋ฅด๋ฉด ์ข
๋ฃํฉ๋๋ค.
ํ์ด๋จธ๊ฐ ์ข
๋ฃ๋์์ต๋๋ค.
์ด ํ์ด๋จธ๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ํ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํ๋ฉฐ ๊ฐ์ฒด ์๋ช ๋ฌธ์ ๋ผ๋๊ฐ ๋น๋๊ธฐ ์ฝ๋ฐฑ์ด ์๋ ๋ฑ์ ์ฒ๋ฆฌํ๋ ๋ฒ๊ฑฐ๋ก์์ ์์จ ์ ์์ด ์์ ํ๊ฒ ํ์ด๋จธ๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.