2014-11-17 24 views
5

C# programında, kullanıcının programla etkileşime girmeyi durdurması durumunda zamanlayıcıya ihtiyacım var. Yapması gereken şey duraklatmak ve kullanıcı tekrar etkinleştiğinde yeniden başlatılır. Biraz araştırma yapmış ve bu gibi komutları olduğunu bulduk: daha sonraC# Zamanlayıcı nasıl duraklatılır?

timer.Pause(); 

Ve: benzeri olmadığını

timer.Stop(); 

ve

timer.Start(); 

Ama merak Kullanıcı tekrar aktif hale gelir, kaldığı yerden alır ve tekrar başlatmaz. Herhangi biri yardımcı olabilirse, çok takdir edilecektir! sayesinde

Micah

+3

Hangi "Timer" sınıfı kullanıyorsunuz? 'Stop()' yöntemi neden ihtiyaçlarınızı karşılamıyor? Daha sonra tekrar 'Start() 'diyemez misin? –

+0

Büyük olasılıkla Windows.Forms.Timer, önceki birkaç soru WinForms için olduğu için. –

+0

Diğerlerinden ve hatta örnek bir çözümden bahsedildiği gibi, duraklatmaya ve devam ettirmeye çalıştığınız şeyin içeriğini bilmedikçe, bir zamanlayıcıyı durdurma/duraklatma belirsizdir. Önceki adımların sonuçlarına dayanan karmaşık calcs, veri tabanını sorgulama, sansürleri, ağları izleme, vb ... – DRapp

cevap

10

Sen NET'te Stopwatch sınıfını kullanarak bunu başarmak. Sadece durup başlayarak kronometrenin örneğinin kullanımına devam edersiniz. kolay olduğu için bir duraklama yoktur

timer.Reset(); 
timer.Restart(); 
+0

Lütfen bu cevabın neden reddedildiğini açıklayabilir misiniz? –

+5

Ben yapmadım, ama gerçekten OP'nin yapmaya çalıştığı şeylere bağlı. Düzenli aralıklarla biraz kod yürütmek için zamanlayıcıya ihtiyaç duyarsa ve bir aralığın ortasında duraklamak istiyorsa, onu bir Kronometre ile değiştirmek ona yardımcı olmaz. –

+0

Ben de yoktu ama soru kullanıcı aktivitesi <-> hareketsizlik hakkındaydı. OP'ye ipucu: iki zamanlayıcı kullanma konusunda utanılacak bir şey yok! – TaW

3

:

hemen altında gibi Reset veya Restart yöntemleri çağırmak, kronometreyi sıfırlamak için using System.Diagnostics;

var timer = new Stopwatch(); 
timer.Start(); 
timer.Stop(); 
Console.WriteLine(timer.Elapsed); 

timer.Start(); //Continues the timer from the previously stopped time 
timer.Stop(); 
Console.WriteLine(timer.Elapsed); 

yararlanmak için emin olun eşdeğer Zamanlayıcıyı duraklatmak yerine durdurabilirsiniz, daha sonra yeniden başlatmanız gerektiğinde, kalan süreyi belirtmeniz yeterlidir. Karmaşık olabilir veya basit olabilir; Yapmak için zamanlayıcıyı kullandığınıza bağlıdır. Yaptığınız şey, zamanlayıcıyı ne kullandığınıza bağlı olması, muhtemelen bir duraklamanın olmaması nedenidir.

Belirli bir zaman diliminde tekrarlanan bir şey yapmak için zamanlayıcı kullanıyor olabilirsiniz veya belirli bir süreye geri sayım yapmak için zamanlayıcı kullanıyor olabilirsiniz. Bir şeyi (her saniye gibi) tekrarlı olarak yapıyorsanız, gereksinimleriniz o dönemin başlangıcında (bir saniye) veya o dönemin bir bölümünde yeniden başlatılmak olabilir. Duraklama zaman aralığından daha fazla ise ne olur? Genellikle kaçırılan olaylar göz ardı edilirdi ama bu şartlara bağlı.

Gereksinimlerinizi belirlemeniz gerektiğini söylemeyi deniyorum. Daha sonra yardıma ihtiyacınız varsa, neye ihtiyacınız olduğunu netleştirin.

İlgili konular