C#

[C#]쓰레드 이용시 Control.Invoke 오류발생 시 해결 예제

선영아 사랑해 2016. 1. 29. 16:59


쓰레드를 이용하여 프로그램을 개발하다보면 구문상 오류가 없는 상태에서 프로그램을 실행하다보면 예기치 않은 오류를 접하셨을 거에요?


예를 들면, 텍스트 박스에 단순히 값만 표시하는데 Exception 오류가 발생이 됩니다.


오류 내용은 Control.Invoke 관련 Exception이었을 겁니다.


이럴 경우 해결 할 수 있는 예제코드 이오니 참고해보세요..



delegate void valueDelegate(string value);

delegate void clearDelegate(TextBox tb);

//텍스트박스 초기화
private void ClearSet(TextBox tb)
{
    if (tb.InvokeRequired)
    {
        tb.Invoke(new clearDelegate(ClearSet), tb);//선언한 delegate 사용하며 함수명과, 파라미터 값 선언
    }
    else
    {
        tb.Text = "";
        tb.SelectAll();
        tb.Focus();
    }
}

//텍스트박스에 값 적용
private void stringData(string Data)
{
 if (textBox.InvokeRequired)
    {
        textBox.Invoke(new valueDelegate(stringData), Data);//선언한 delegate 사용하며 함수명과, 파라미터 값 선언
    }
    else
    {
        textBox.Text = Data;
    }
}