2014-03-03 1 views
1

간단한 POC Windows 응용 프로그램을 작성 중이며 버튼 클릭 이벤트에서 백그라운드 작업자 DoWork 메서드를 사용하여 UI의 텍스트를 업데이트합니다. 내 이해는 Backgroundworker가 자동으로 동기화를 수행하므로 아무런 문제가 없어야합니다. 하지만 UI를 업데이트하려고 할 때 오류가 발생UI의 BackgroundWorker 및 업데이트 컨트롤

private void button1_Click(object sender, EventArgs e) 
    { 
     bw.DoWork += bw_DoWork; 
     bw.RunWorkerAsync(); 
    } 

    void bw_DoWork(object sender, DoWorkEventArgs e) 
    { 
     textBox1.Text = "Hello"; 
    } 

오류입니다 : enter image description here

+0

당신이 오류의 어떤 종류를받을 수 있나요 비 UI 스레드에서 실행? InvokationException? – Turbofant

+0

스크린 샷을 추가했습니다. – Patrick

+0

UI 스레드에서 모든 작업을 수행 한 경우 BGW를 사용하는 것이 무엇이겠습니까? – Servy

답변

3

동기화가 ProgressChangedRunWorkerCompleted 핸들러에 만 자동으로 이루어집니다.

DoWork 핸들러 내부의 코드는

+0

Ahh very intresting - RunWorkerCompleted 메소드의 UI를 업데이트하고 보겠습니다. 이 분 감사드립니다. – Patrick

+0

@ 패트릭 당신은 환영합니다 – Alberto

+0

예 - 방금 시도했습니다. 그것은 작동합니다. 대답으로 당신의 것을 받아 들일 것입니다. – Patrick