2011-07-29 5 views
1

일부 파일에서 긴 프로세스를 수행하기 위해 백그라운드 작업자를 사용하고 있습니다. textBox1의 디렉토리 주소와 textBox2의 처리 함수에 사용되는 파일 주소를 가져옵니다. ComboBox도 있습니다. ComboBox의 선택된 값에 따라 프로그램은 간단한 스위치 케이스를 통해 다른 기능을 선택합니다.BackGroundWorker에서 textBox.Text를 읽으십시오.

이제 이러한 텍스트 상자 및 ComboBox 값을 BackGroundWorker_DoWork에 액세스 할 수 없다는 문제가 있습니다. 물론 생성되지 않은 스레드에서 컨트롤에 액세스하는 예외는 발생합니다. 나는 대표자들과 모든 것에 관해 많은 것을 수색했다. 지금까지 본 예제는 프로그램 내에서 textBox에 텍스트를 할당하는 것입니다. 내가하고 싶은 것은 사용자가 textBox에 삽입 한 텍스트를 읽는 것입니다. Delegate 개념에 익숙하지 않기 때문에 textBoxes 및 ComboBox의 텍스트를 읽고 사용할 수 있고 BackGroundWorker에서 처리하는 방법을 알고 싶습니다.

죄송합니다. 보안 정책으로 인해 코드를 게시 할 수 없습니다.

/MoNoo

답변

1

이 윈폼, WPF 나 실버 라이트이지만, WPF에서이 같은 디스패처 콤보 상자의 특성, 뭔가 사용하여이 작업을 수행한다면 당신은 말을하지 않습니다 :

string theText; 

    myComboBox.Dispatcher.Invoke(DispatcherPriority.Normal, 
      new Action(delegate() 
      { 
       theText = myComboBox.Text; 
      } 
     )); 

을 그러면 주 스레드로 호출이 마샬링되고 다시 호출됩니다.

관련 문제