이번엔 멀티스레드관련해서 ThreadPool부터 진행합니다.
ThreadPool 이용한 비동기 메서드 호출 (System.Threading)
비동기 메서드 작업을 위해서 QueueUserWorkItem 메서드를 사용합니다.
namespace ConEx06
{
class Program
{
static void Main(string[] args)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Async1));
//메인스레드 진행시키기.
for(int n=0; n< 10; n++)
{
Thread.Sleep(1000); //계속되는 일이라는 가상을 위해서 Sleep을
Console.WriteLine("Main Thread...");
}
ThreadPool.QueueUserWorkItem(Async2, 10); // 그냥 함수명을 쓸수도. 여기선 뭔가 값을 전달한다.
for (int n = 0; n < 10; n++)
{
Thread.Sleep(1000); //계속되는 일이라는 가상을 위해서 Sleep을
Console.WriteLine("Main Thread...");
}
}
private static void Async1(object state)
{
Thread.Sleep(3000); //계속되는 일이라는 가상을 위해서 Sleep을
Console.WriteLine("Threadpool Thread: Aysnc1");
}
static void Async2(object x)
{
Thread.Sleep(3000);
Console.WriteLine("x :{0}", (int) x);
}
}
}
- 결과
아래처럼 메인스레드는 계속 진행하는 도중에
해당 스레드가 작업이 진행되었다면 실행 및 결과를 보임
'프로그래밍&IT > C#' 카테고리의 다른 글
C# 암시적 타입변환 변수, var 타입 (0) | 2015.12.18 |
---|---|
System.Environment 클래스관련해서 (0) | 2015.12.17 |
Thread 관련 간단 정리1. Thread / ThreadStart / ParameterizedThreadStart (0) | 2015.12.13 |
Params 한정자, 매개변수 배열 (0) | 2015.09.07 |
[C#] Cross Threading 처리 : InvokeRequired 속성 (0) | 2015.05.30 |