2016-03-31 28 views
-3

我做了一個程序,它是一個使用C#和Xamarin平臺的隨機數生成器。我把一個特定的號碼作爲目標,PC必須隨機抽取數字,當它找到目標號碼時,它給了我找到號碼的試驗次數。我只想念一件事,我想要一個計時器,這樣我就能知道找到這個號碼花了多少時間。當它找到它時,定時器停止錄製。如何做到這一點?如何在C#中記錄持續時間?

+5

看看[StopWatch](https://msdn.microsoft.com/de-de/library/system.diagno stics.stopwatch(V = vs.110)的.aspx)。這可以衡量時間跨度。 –

回答

0

可以使用秒錶類,記錄持續時間:

// Create new stopwatch. 
Stopwatch stopwatch = new Stopwatch(); 

// Begin timing. 
stopwatch.Start(); 

// Do something. 
for (int i = 0; i < 1000; i++) 
{ 
    Thread.Sleep(1); 
} 

// Stop timing. 
stopwatch.Stop(); 

// Write result. 
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed); 
+0

好吧,我會嘗試。當程序找到目標號碼時,這個計時器是否停止?對不起,我還是個初學者.. – Ayman

+0

@Ayman'Stopwatch'將在你調用'stopwatch.Stop()'時停止,所以當你找到目標號碼時,只需調用'Stop()',你會得到預期的結果。 – dylansturg

+0

@Dylan S,我希望它在發現數字時自動停止,因爲它可能需要數小時才能找到它。 – Ayman

0

你並不需要爲這個計時器。只是這樣做讓經過的毫秒

var startTime = Environment.TickCount; 
// do some work. 
var timeTaken =Environment.TickCount-startTime; 
0
  1. 你的函數
  2. 登錄你的函數
  3. 輸出結果在幾秒鐘或任何之後的結束時間之前登錄的開始時間,你想

    單位
    // 1) Log the start time before your function 
        long startTime = DateTime.Now.Ticks; 
    
        // 2) Log the finish time after your function 
        double secondsElapsed = new TimeSpan(DateTime.Now.Ticks - startTime).TotalSeconds; 
    
        // 3) Output result in seconds or whichever units you want 
        Debug.WriteLine($"Function took: {secondsElapsed}"); 
    
+0

歡迎來到StackOverflow!我想評論你的答案。你沒有錯,但這不是最好的答案。使用'DateTime'結構對於計算操作時序並不夠精確。 – Cameron

+0

什麼更精確呢? – epenabella

+0

System.Diagnostics命名空間中的'Stopwatch'類是首選和推薦的類。 – Cameron

相關問題