在這種情況下,如何從BackgroundWorker獲取結果?我也願意以其他方式做事(比如不使用BackgroundWorker)。我們的目標是同時開展所有工作。我真的不知道是否所有的工作都會使用bw並行完成。我仍然在學習這個線程化的東西。我使用的是WPF/XAML(我非常確定這對編寫線程類型代碼有很大的影響)。C#BackgroundWorker獲得結果
namespace JobFactory
{
public partial class MainWindow : Window
{
MainWindow()
{
InitializeComponent();
Manager boss = new Manager();
string[] reports = boss.runWorkers(50);
}
}
}
namespace Workers
{
class Manager
{
public reports[] runWorkers(int numWorkers)
{
BackgroundWorker worker = new BackgroundWorker();
for (int i = 0; i < numWorkers; i++)
{
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
string report = this.job();
};
}
worker.RunWorkerAsync();
//Return reports here...
}
public string job()
{
Thread.Sleep(2000);
return "Job Completed";
}
}
}
寫代碼上面的並行他應該使用'Parallel'類。通過這種方式,他只創建異步方法,異步!=並行。 – 2011-03-15 18:23:04
小心解釋downvote? – 2011-03-15 18:23:32
你能解釋一下async!= parallel嗎? – 2011-03-15 18:24:01