SW/C#
Timer Task 타이머 타스크
또난
2020. 7. 28. 18:49
스레드 방식 타이머 이용한 반복 작업... 돌아가기는 하는데...흠..
using System;
using System.Threading;
class TimerExample
{
private static readonly System.Threading.Timer[] TimerTask = new System.Threading.Timer[10];
public class Task0
{
private int maxCount;
private int index;
public Task0(int count)
{
maxCount = count;
}
public void Run(Object stateInfo)
{
index = (int)stateInfo;
Console.WriteLine("{0:h:mm:ss.fff} Task0 Run stateInfo{1} {2} ",DateTime.Now, stateInfo.ToString(), maxCount);
if (maxCount > 0)
{
maxCount--;
if (maxCount == 0) TimerTask[index].Dispose();
}
}
}
public class Task1
{
private int maxCount;
private int index;
public Task1(int count)
{
maxCount = count;
}
public void Run(Object stateInfo)
{
index = (int)stateInfo;
Console.WriteLine("{0:h:mm:ss.fff} Task1 Run stateInfo{1} {2} ",DateTime.Now, stateInfo.ToString(), maxCount);
if (maxCount > 0)
{
maxCount--;
if (maxCount == 0) TimerTask[index].Dispose();
}
}
}
static void Main()
{
Console.WriteLine("{0:h:mm:ss.fff} Creating timer.\n", DateTime.Now);
var task0 = new Task0(0); // 무제한 반복.
TimerTask[0] = new Timer(task0.Run, 0, 1000, 500); // 1초 후 500ms 주기
var task1 = new Task1(10); // 10번만 반복.
TimerTask[1] = new Timer(task1.Run, 1, 1000, 1000); // 1초 후 1초 주기
Console.Read();
}
}