现在,我有以下代码,它将方法的完成时间计算并打印出来:
static void Run()
{
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
GetTableNames().Wait();
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedTicks);
}
static async Task GetTableNames() { doesStuff(); }
但是,我会重复使用那个计时代码,所以我想将它包装在一个方法中,这样我就可以这样做:
static void Run()
{
TimeMethod(GetTableNames);
TimeMethod(GetChairNames);
TimeMethod(GetStoolNames);
// etc...
}
我一直在尝试一些不同的东西(Action,Delegate,Func),但是没有成功找到一个允许我在停止计时器之前调用传递函数的.Wait()。有什么建议吗?
答案 0 :(得分:1)
声明TimeMethod
以Func<Task>
:
TimeMethod(Func<Task> method)
{
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
method().Wait();
stopwatch.Stop();
Console.WriteLine(stopwatch.ElapsedTicks);
}