스레드 방식 타이머 이용한 반복 작업... 돌아가기는 하는데...흠..
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();
}
}
'SW > C#' 카테고리의 다른 글
메소드 가변 파라메터 params (0) | 2022.02.05 |
---|---|
날짜, 시간 비교 처리 DateTime.Compare (0) | 2020.08.11 |
바이트 byte 버퍼 저장.. 통신 처리에서 사용. (0) | 2020.08.10 |
문자열16진수를 바이트 형태로 변환 / 특정 문자로 바이트 분리 (0) | 2020.08.08 |
string byte copy 스트링 바이트 복사 Array.Copy 조합, combine (0) | 2020.07.27 |