2016-03-31 23 views
-3

C# ve Xamarin platformu kullanarak rasgele sayı üreteci olan bir program yaptım. Belirli bir sayıyı hedef olarak belirledim ve PC rastgele sayı almalı ve hedef numarasını bulduğunda numarayı bulmak için deneme sayısını verdim. Sadece bir şeyi özlüyorum, bir zamanlayıcı koymak istiyorum, bu yüzden numarayı bulmak için ne kadar zaman harcadığımı bilebilirim. Ve onu bulduğunda, zamanlayıcı kaydı durdurur. Bu nasıl yapılabilir?C# daki süreyi nasıl kaydedebilirim?

+5

[StopWatch] 'a bakın (https://msdn.microsoft.com/de-de/library/system.diagno stics.stopwatch (v = vs.110) .aspx). Bu zaman dilimleri ölçebilir. –

cevap

0

Sen zaman sürelerini kaydetmek için Kronometre sınıfını kullanabilirsiniz:

// 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

Tamam, deneyeceğim. Program hedef sayıyı bulduğunda bu zamanlayıcı durur mu? Üzgünüm, ben hala bir başlangıç ​​.. – Ayman

+0

@Agman "Stopwatch", "stopwatch.Stop()" dediğinizde duracak, böylece hedef numarasını bulduğunuzda, sadece "Stop()" olarak adlandırın ve beklenen değeri alırsınız) sonuç. – dylansturg

+0

@Dylan S, numaranın nedenini bulduğunda otomatik olarak durmasını istiyorum belki de onu bulmak saatlerce sürecektir. – Ayman

0

Bunun için bir zamanlayıcı gerekmez. Sadece bu geçen milisaniye

var startTime = Environment.TickCount; 
// do some work. 
var timeTaken =Environment.TickCount-startTime; 
0
  1. birimler

    istediğiniz fonksiyonu
  2. Log saniyede fonksiyonu
  3. Çıktı sonucu ya da her türlü sonra bitiş zamanı öncesinde başlangıç ​​zamanı Log almak için ne

    // 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'a Hoş Geldiniz! Cevabın hakkında yorum yapmak istedim. Yanlış değilsin, ama en iyi cevap bu değil. 'DateTime 'yapısını kullanmak, operasyon zamanlamasının hesaplanması için yeterli değildir. – Cameron

+0

Daha kesin olan nedir o zaman? – epenabella

+0

'System.Diagnostics' ad alanındaki' Stopwatch' sınıfı, tercih edilen ve önerilen sınıftır. – Cameron

İlgili konular