2014-12-03 2 views
-1

나는 작업자 스레드에서 일부 작업을 처리하는 응용 프로그램이 있습니다. Dowork 함수에서 DAL 함수를 호출합니다. DAL 결과 (성공 또는 실패)에 따라 추가로 진행할 것입니다. 아래 예제 코드는 구현할 방법입니다. 당신이 backgroundWorker_DoWork 방법 e.Result을 할당하지 않는 것처럼작업자 스레드 오류 및 결과 처리?

MyFunction() 
{ 
    this.backgroundWorker = new BackgroundWorker(); 
    this.backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); 
    this.backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted); 
    this.backgroundWorker.RunWorkerAsync(); 
} 
void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
    if(e.Error!=null) 
    { 
    //operation fail 
    } 
    else if(e.Result!=null) 
    { 
    //operation succeed 
    } 
} 
void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) 
{ 
    int result=GetResult(10,0); 
    int result2=GetResult(10,5); 
} 
int GetResult(int number1,int number2) 
{ 
    return a/b; 
} 
+0

그럼 궁금한 점은 무엇입니까? 당신은 어떤 문제에 직면하고 있습니까, 뭔가 잘못 됐나요? –

+0

회신을 위해 Thnx.'backgroundWorker_RunWorkerCompleted'을 구현하지 못했습니다. do worker 스레드의 결과를 사용하고 싶습니다. 회신 해 주셔서 감사합니다. – madan

답변

1

는 것 같습니다.

이해야 뭔가 같은 : 그것은 e.Error에서 예외 텍스트하고 e.Result에, 그렇지 않으면됩니다 (GetResult(10, 0)에 의해 예를 들어) 오류의 경우 다음

void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) 
{ 
    e.Result = GetResult(10,5); 
} 

- 당신은에서 기다리고있어 것처럼 귀하의 backgroundWorker_RunWorkerCompleted 방법.

+0

나는 이미 dowork 메소드에 e.error 옵션이 없다는 것을 시도했다. – madan

+0

'_DoWork'에서'e.Error'를 설정할 필요가 없습니다. 그냥'e.Result'를 설정하십시오. BackgroundWorker는 실행 중에 예외가 발생하면 자체적으로 e.Error를 설정합니다. –