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