2016년 7월 13일 수요일

c# 쓰레드 윈폼 (Thread winform)


먼저 쓰레드를 생성하고, Thread_Test1 을 시작한다.

그러면 크로스 스레드 예외가 난다.

윈폼에서는 컨트롤들에 접근할 수 있는 스레드는, 처음에 컨트롤들을 만든 스레드 하나뿐이다.

따라서,처음에 컨트롤을 만든 쓰레드가 있는데, 다른 쓰레드를 만들고 이쓰레드가 프로그래스바 에 접근할려고 해서 이 예외가 발생한 것이다.






--------------------------------------------------------------------------------------------------
Thread tr
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
tr = new Thread(Thread_Test1);
tr.Start();


}

public void Thread_Test1()
{
try
{
progressBar1.Minimum = 0;
progressBar1.Maximum = 1000000; //프로그래스의 최대값을 설정
for (int i = 0; i < 1000000; i++) // for문을 이용해 프로그래스바의 값을 변경해 줍니다
{
progressBar1.Value = i;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

댓글 없음:

댓글 쓰기