사용자가 생성한 쓰레드내 (사용자 쓰레드) 에서, 메인 쓰레드가 소유한 컨트롤 객체를 제어하기 위해서는 Invoke 를 통해 해결하셔야 합니다.
간략히 이해하시려면 사용자 쓰레드에서 이벤트를 발생시켜서, 메인 쓰레드에서 이벤트로 받아 처리하라는 이야기 인데요. (이게 더 말이 어렵나??
개발자는 머니머니해도 소스 몇줄 보여드리면 이해가 팍팍..
// 버튼을 누르면 쓰레드 동작..
private void button1_Click(object sender, System.EventArgs e)
{
hTread = new Thread(new ThreadStart(Test));
hTread.Start();
}
private void Test()
{
try
{
while(true)
{
// Form2 를 열기위한 이벤트 발생..
this.Invoke(new EventHandler(InvokeShowDialog));
Thread.Sleep(5000);
}
}
catch(Exception err)
{
MessageBox.Show(err.ToString());
}
}
// 이벤트 처리
private void InvokeShowDialog(object sender, EventArgs e)
{
Form2 f = new Form2();
f.Show();
}
'.NET > C#' 카테고리의 다른 글
[C#] 디스크 사이즈 알아내기... (0) | 2007.05.29 |
---|---|
[MSDN 펌] SQL Server에 BLOB 값을 쓸 때 리소스 절약 (0) | 2007.02.15 |
[펌] winmm.dll 을 이용한 간단한 MP3 Player (0) | 2007.01.04 |
닷넷 어플리케이션을 TrayIcon 화 시키는 방법 (0) | 2007.01.03 |
http://www.castleproject.org/ (0) | 2006.12.15 |