2016년 7월 27일 수요일

c# winform - acess controller in sub thread BeginInvoke((Action)(() => ControllerAcess ));


btnScan => Main Thread

메인스레드가 아닌곳에서 접근할려면 이렇게 하면 된다.

btnScan.BeginInvoke((Action)(() => btnScan.Enabled = true));


예를 들어

Thread tr;
private void button2_Click(object sender, EventArgs e)
{
tr = new Thread(method);
tr.Start();
}

private void method()
{
button1.Enabled = false;

button1.BeginInvoke((Action)(() => button1.Enabled = true));

Action act = new Action(invokemethod);
button1.BeginInvoke(act);

button1.BeginInvoke((Action)invokemethod);
}

private void invokemethod()
{
button1.Enabled = false;
}


이 서브 스레드에서 윈폼의 컨트롤러에 접근시 위와 같이 사용

댓글 없음:

댓글 쓰기