나는 다음과 같은 코드를 가지고 :변수 backgroundWorker 매개 변수는 항상 동일합니까?
내 목표는// 1.
public void RunSQL(QuerySetup querySetup)
{
//querySetup.Users is 10
for (int i = 1; i <= querySetup.Users; i++)
{
querySetup.CurrentUser = i;
var worker = new BackgroundWorker {WorkerReportsProgress = true};
worker.DoWork += worker_DoWork;
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
worker.RunWorkerAsync(querySetup);
}
}
// 2.
void worker_DoWork(object sender, DoWorkEventArgs e)
{
var querySetup = e.Argument as QuerySetup;
// Doing stuff...
e.Result = querySetup.CurrentUser;
}
// 3.
void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("User " + e.Result.ToString() + " is done.");
}
는, 그 말에 나는 얻을 :
사용자 1은 사용자 2가
...
을 수행완료
사용자 10이 완료되었습니다.
(해당 부분에 없음 소액 주문)
하지만 "사용자 10이 완료되었습니다"는 10 배 밖에되지 않습니다.
하지만 왜? 어떻게 든 내 작업자 프로세스를 표시해야하므로 나중에 확인할 수 있습니다.
모든 작업자에게 동일한 querySetup 객체를 전달하고 있음을 의미합니다. –
네, @ JoãoAngelo가 말했습니다. –