[데브피아 펌] 스레드에서 메인프레임 리소스 건드릴때...
사용자가 생성한 쓰레드내 (사용자 쓰레드) 에서, 메인 쓰레드가 소유한 컨트롤 객체를 제어하기 위해서는 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();
}