저는 C#의 BackgroundWorker에 관한 문제에 직면하고 있습니다. 여기C# BackgroundWorker inside BackgroundWorker
var bwBIG = new BackgroundWorker();
bwBIG.DoWork += (_senderBIG, argsBIG) =>
{
var bw = new BackgroundWorker();
String requestResult = "";
bw.DoWork += (_sender, args) =>
{
requestResult = tempHelper.GetData();
};
bw.RunWorkerCompleted += (_sender, args) =>
{
makeData(requestResult);
};
bw.RunWorkerAsync();
}; //bwBIG.DoWork
bwBIG.RunWorkerCompleted += (_senderBIG, argsBIG) =>
{
prepareData(rtbData.Text);
MessageBox.Show("Data OK");
};
bwBIG.RunWorkerAsync();
그것은 "다음 MessageBox.Show합니다 (tempHelper.GetData()를 실행한다고 가정 한 다음 makeData (requestResult), 다음 finnally prepareData (rtbData.Text) 내 프로그램 코드의 일부 조각입니다 데이터 OK "); 그러나 bw가 전혀 실행되지 않는 것 같습니다. 코드를 실행할 때마다 MessageBox.Show ("Data OK")에 이상하게 점프되었습니다. 도와주세요 ??? 읽어 주셔서 감사합니다.
'bwBIG.Dowork'에는 아무 것도 없으므로 아무런 시간도 멈추지 않습니다. 당신이하고있는 일은 다른 배경 작업자를 설정하고 비동기로 실행하라는 것입니다. 당신은'bw.DoWork'가 끝나기를 기다리지 않는 것처럼 보입니다. 그래서'bwBig'는 매우 빨리 끝납니다. 그리고 나는 왜 이것이 백그라운드 작업을 생성 할 때 배경 작업을 설정해야하는지 묻어야 만합니다. – Chris
모든 bwBIG가 설정되고 내부 BW가 실행됩니다. 즉시 종료되고 RunWorkerCompleted가 실행됩니다. 당신이 무엇을하려고하는지 확신하지 못합니다. –