通过param传递异步方法的外部计时?

时间:2014-11-25 00:41:33

标签: c# .net

现在,我有以下代码,它将方法的完成时间计算并打印出来:

    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()。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

声明TimeMethodFunc<Task>

TimeMethod(Func<Task> method)
{

    System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
    stopwatch.Start();
    method().Wait();
    stopwatch.Stop();

    Console.WriteLine(stopwatch.ElapsedTicks);
}