Problem med BackgroundWorker
HejsaJeg har en klasse der modtager en liste af URL'er den skal lave HTTP request på, hvis der f.eks. er 10 URL'er er det smartere hvert request kører i hver sin BackgroundWorker for at spare tid.
Jeg har brugt BackgroundWorker før, og kan ikke umiddelbart spotte problemet da debuggeren stopper tilfældige steder når jeg stepper igennem.
Koden ser ud som følger:
public void Start(object sender, DoWorkEventArgs e)
{
SettingsObj = (Settings) e.Argument;
foreach (Url url in SettingsObj.Urls)
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += worker_DoWork;
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
Console.WriteLine("UrlRunner: Starting job '" + url.Name + "'");
worker.RunWorkerAsync(url);
}
while(true)
{
Thread.Sleep(1000);
if (IsFinished)
{
e.Result = ExecutedUrls;
break;
}
}
}
Som det ses startes en BW for hver URL (umiddelbart er DoWork og RunWorkerCompleted metoderne irrelevante). Start metoden kører ligeledes asynkront for at kunne signalere hvornår URL'erne er behandlet til det kaldende objekt.
Jeg har prøvet med breakpoints i DoWork metoden, men debuggeren når aldrig dertil, den plejer at stoppe eksekvering et sted i foreach() løkken (den kommer ligeledes aldrig ned til while() løkken.
Jeg håber jeg har forklaret mig tydeligt nok og at i kan hjælpe :)