다음 코드는 1에서 100까지의 숫자를 더하고 합계를 반환합니다. 내가하려는 것은 backgroundworker에서 계산을 실행하고 값을 반환하는 것입니다. 문제는 DoWork가 완료되기 전에 returnValue가 리턴된다는 것입니다. 값을 반환하기 전에 백그라운드 작업자가 완료 될 때까지 어떻게 기다릴 수 있습니까? (나는 ... 내 DoWork의 반환을 넣을 수없는 것)BackgroundWorker는 값을 반환합니까?
double returnValue = 0;
var b = new BackgroundWorker();
b.DoWork += new DoWorkEventHandler(
delegate(object sender, DoWorkEventArgs e) {
for(int i=0;i<100;i++){
returnValue += (i+1);
}
}
);
b.RunWorkerAsync();
return returnValue;
부록 : 그것을 배경 노동자이를 실행하는 대신 동일한 스레드에서 메시지 펌프를 보내 더 나은 것인가?
또한이 코드는 예제 코드이며 실제 코드는 완료하는 데 1 분 이상 걸립니다.
http://stackoverflow.com/questions/939635/how-to와 거의 같은 질문입니다. -make-backgroundworker-return-an-object –
가능한 복제 http://stackoverflow.com/questions/5182782/c-return-value-from-function-invoked-in-thread/5201814#5201814 –
무엇을 요구하고 있습니까? 해야 할 일은 말이되지 않습니다. 'BackgroundWorker'에서 코드를 실행하려하지만'BackgroundWorker'가 끝날 때까지 호출하는 메소드가 돌아 오지 못하게하려고합니다. –