2014-11-25 27 views
0

現在,我有以下的代碼,時間的方法和打印出來的完成時間:從外部計時通過param傳遞的異步方法?

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... 
} 

我一直在嘗試一些不同的東西(的行動,代表,Func鍵),但沒有成功地找到了一個能夠讓我打電話在停止計時器之前,傳遞函數上的Wait()。任何建議?

+0

如何的'GetTableNames'聲明? – MarcinJuraszek 2014-11-25 00:47:02

+0

@MarcinJuraszek在該第一碼塊^的底部靜態異步任務 – Benjin 2014-11-25 00:52:36

回答

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

酷;那工作。我一直試圖在宣言中的某個地方貼上異步。謝謝! – Benjin 2014-11-25 01:32:25