2014-02-11 38 views
1

我有一个函数,我用于压力测试,我想压力测试多个函数。我在这里进行压力测试的功能是GetParameters(reportUri, SessionContext);如何创建一个帮助函数,调用其他函数作为参数

如何添加一个辅助函数,其中我可以传递一个参数,如动作主体或委托(这很好,但我有不同参数的多个函数)。并通过动态替换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); 
     }); 
    } 
} 

让我知道如果我不够清楚。我可以编辑我的问题按要求

回答

0

如何量变到质变的方法类似

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); 
      }); 
     } 
    } 
+0

威尔的Parallel.For在同一名单的IList 上工作?基本上我希望Parallel.For中的每个方法体都可以自行执行,因为.Net将产生它自己的线程。最后,我想断言参数列表是否与期望的编号匹配 – StackOverflowVeryHelpful

+0

“Func”decleration的最后一个参数是返回结果,因此每个实例都应该是“Parallel.For”删除的本地。 –

相关问题