【发布时间】:2014-03-06 10:13:53
【问题描述】:
我在下面有这个功能,我想了解这一点。另外,如果您有任何文件指向我。我从 msdn 阅读了有关 ManualResetEvent 和 ThreadPool 的信息
public void GetParametersThreadPool()
{
var toProcess = 50;
ManualResetEvent[] threadsActive = new ManualResetEvent[50];
for (int handleIndex = 0; handleIndex < 50; ++handleIndex)
{
threadsActive[handleIndex] = new ManualResetEvent(false);
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object state)
{
string reportUrl = TeamFoundationTestConfig.TeamFoundationReportPath("TaskGroupStatus");
ReportUri reportUri = ReportUri.Create(reportUrl);
Log.Message(TraceEventType.Information, "ReportUri = {0}".InvariantFormat(reportUri.UriString));
IList<Parameter> parameters = this.RemoteReportingServiceFactory.CreateReportParameterProvider().GetParameters(reportUri, SessionContext);
Assert.IsNotNull(parameters, "Assertion failed: Parameters cannot be null. GetParameters failed");
Assert.IsTrue(parameters.Count > 0, "Assertion failed: No parameters available on the report page. GetParameters failed. Count = {0}".InvariantFormat(parameters.Count));
if (Interlocked.Decrement(ref toProcess) == 0)
{
threadsActive[handleIndex].Set();
}
}), null);
//// Wait for all the threads to complete before starting the next set of requests.
threadsActive[handleIndex].WaitOne();
}
}
当我更新这行代码时:ManualResetEvent[] threadsActive = new ManualResetEvent[100];它给出了一个例外,说小于 64。
目前,当我运行此压力测试时,它挂在我进行日志记录的行上并且没有完成运行。我究竟做错了什么?
如果有更好的方法来做到这一点?也只是为了提供信息,我引用了 stackoverflow 中的另一个问题来自己创建这个函数
【问题讨论】:
-
这个项目代码还是单元测试?
标签: c# multithreading threadpool stress-testing