我有一个用于压力测试的函数,我想对多个函数进行压力测试。我在这里压力测试的功能是 GetParameters(reportUri, SessionContext);
我如何添加一个辅助函数,我可以在其中传递参数,例如 Action 主体或委托(delegate)(这很好,但我有多个具有不同参数的函数)。它通过动态替换 this.RemoteReportingServiceFactory.CreateReportParameterProvider().GetParameters(reportUri, SessionContext);
来执行所有步骤。除了上面提到的行,整个函数体将是相同的
public void GetParameters()
{
for (int i = 0; i < 100; i++)
{
Log.Message(TraceEventType.Information, "Start of {0} sequential iteration with 5 parallel stress runs".InvariantFormat(i));
Parallel.For(0, 2, parameterIteration =>
{
Log.Message(TraceEventType.Information, "Stress run count : {0}".InvariantFormat(parameterIteration + 1));
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);
});
}
}
如果我不够清楚,请告诉我。我可以根据要求编辑我的问题
最佳答案
如何将方法更改为类似
public void GetParameters(Func<ReportUri, SessionContext, IList<Parameter>> returnStuff)
{
for (int i = 0; i < 100; i++)
{
Log.Message(TraceEventType.Information, "Start of {0} sequential iteration with 5 parallel stress runs".InvariantFormat(i));
Parallel.For(0, 2, parameterIteration =>
{
Log.Message(TraceEventType.Information, "Stress run count : {0}".InvariantFormat(parameterIteration + 1));
string reportUrl = TeamFoundationTestConfig.TeamFoundationReportPath("TaskGroupStatus");
ReportUri reportUri = ReportUri.Create(reportUrl);
Log.Message(TraceEventType.Information, "ReportUri = {0}".InvariantFormat(reportUri.UriString));
IList<Parameter> parameters = returnStuff(reportUri, SessionContext);
});
}
}
关于c# - 如何创建一个辅助函数来调用作为参数传递的其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21693442/