我正在尝试使用BackgroundWorker
对Web服务进行负载测试,
代码是:
private void button1_Click(object sender, EventArgs e)
{
CheckWS("11111");
CheckWS("22222");
CheckWS("3344111");
// .. and some more of those, approx 1000
}
public void CheckWS(string sUser)
{
BackgroundWorker bgWork = new BackgroundWorker();
bgWork.DoWork += new DoWorkEventHandler(bgWork_DoWork);
sObject sData = new sObject();
sData.iNum = iCount++;
sData.sId = sUser;
bgWork.RunWorkerAsync(sData);
}
public void bgWork_DoWork(object sender, DoWorkEventArgs e)
{
// Update a textbox that this worker started
...
// Run a web service
...
// Update the textbox as worker ended
}
但是,根据完成工作所花费的时间以及根据 worker 的输出(文本框中的 worker “开始”和“结束”),每个 worker 开始花费的时间都太长了-
我希望所有东西都可以同时运行,但是相反,它一次只执行2-3个后台工作程序...
关于这个问题有什么想法吗?
最佳答案
后台工作程序在ThreadPool之上运行,TP故意限制了线程数。
由于这是一个Test(-driver)应用程序,因此更改Pool的配置没有问题。您可以将最小线程数设置为合理的值。
ThreadPool.SetMinThreads(20, 20);