Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何调用代理_C# - Fatal编程技术网

C# 如何调用代理

C# 如何调用代理,c#,C#,我有以下代码 public class Test { public static long Method1(Action a) { var s = Stopwatch.StartNew(); a.Invoke(); s.Stop(); return s.Elapsed.TotalMilliseconds; } } 在另一个班级 我怎么能把这叫做 double elapsed = 0;

我有以下代码

public class Test
{
  public static long Method1(Action a)
  {
        var s = Stopwatch.StartNew();
        a.Invoke();
        s.Stop();
        return s.Elapsed.TotalMilliseconds;
  }
}
在另一个班级 我怎么能把这叫做

            double elapsed = 0;

            for (int i = 0; i < 100000; i++)
            {


                elapsed+= (TestHelper.Timer(() => session.SaveTransaction(transaction)));
            }
            Debug.WriteLine(string.Format("avg execution time is {0} ms", elapsed/100000));
double-appead=0;
对于(int i=0;i<100000;i++)
{
运行时间+=(TestHelper.Timer(()=>session.SaveTransaction(transaction));
}
WriteLine(string.Format(“平均执行时间为{0}毫秒”,已用/100000));
它不编译。呼叫代码应该是怎样的?

两个问题:

  • 您正在测量一次调用;一般来说,您应该对大量调用计时,否则很可能太快无法测量(或者至少不到一毫秒)
  • 您使用的是
    TimeSpan.millizes
    ,而实际上可能是
    TimeSpan.totalmillizes
    ;否则,如果时间超过一秒钟,它仍然会报告一个介于0和999之间的值
这显然不是您真正的代码,否则无法编译。它是毫秒,不是毫秒,秒表,不是秒表。我更喜欢调用
a()
,而不是
a.Invoke()
。然而,同样的事情:)作为最佳实践,我通常不会复制粘贴我的代码,我只是试图描述问题。所以我真的没有得到你的反对票。@Elena:没有,最好的做法是复制/粘贴代码。不一定是您的原始代码,而是一个简短但完整的程序,演示了问题。您的已用变量是double类型,而不是Action。它包含在for循环中,但我懒得复制粘贴,但如果我有for(int i=0;i@Elena:不,你在方法内部循环,多次调用委托。否则你只会添加0次。这不会有帮助。一如既往,一个简短但完整的程序来演示真正的问题是一个好主意。也许我只是累了,但你“在方法内部循环”是什么是什么意思?啊,明白了,好吗thanks@Elena:当前,注释显示您多次循环和调用
Test.Method
。将该循环移动到秒表块内的
Test.Method
,这样您可以启动秒表,多次调用代理,然后停止秒表。