스레드를 이용하면 보통 Thread 클래스를 사용합니다.
소스는 보통 이렇게요.
Thread thr = new Thread ( ( ) =>
{
//처리 내용
} );
thr.Name = "DBThread";
thr.IsBackground = true;
thr.Start ( );
그런데 일반적인 Thread는 시작과 종료를 사용자가 관리해주어야 합니다.
하지만 ThreadPool이라는 클래스는 스레드를 직접 스레드풀에 담아서 관리 해준다고 합니다.
그래서 사용자가 시작과 종료를 관리하지 않아도 이녀석이 알아서 해줍니다. ^^
간단한 사용방법은 아래와 같습니다.
그리고 parameters 라는 리스트에 스레드에서 사용할 인자값들을 담아서 넘겨주면 유용하겠죠?
using System;
using System.Collections.Generic;
using System.Threading;
namespace MyThreadPool
{
public class Class1
{
#region Field
int _multiThread = 10;
#endregion
void CallThreadPool ( )
{
bool isCheck = false;
DateTime dateTime = DateTime.Now;
List<object> parameters = new List<object> ( );
for ( int i = 0 ; i < _multiThread ; i++ )
{
parameters = new List<object> ( );
parameters.Add ( isCheck );
parameters.Add ( dateTime );
//파라미터 할당 처리 ...
ThreadPool.QueueUserWorkItem ( new WaitCallback ( GetDataFromDB ), parameters );
}
}
void GetDataFromDB ( object parameters )
{
var args = parameters as List<object>;
var isCheck = ( bool ) args [ 0 ];
var dateTime = ( DateTime ) args [ 1 ];
//함수 처리 내용...
}
}
}
댓글 없음:
댓글 쓰기