2016-04-08 50 views
0

Her 3 saniyede bir sıralı listeden bir satır okumayı ve öğeyi bir metin kutusuna okurken göstermeye çalışıyorum? Ama bunu yapmak için ne yapmam gerektiğinden emin değilim. Herhangi bir yardım takdir edilecektir. gitmek için bilgi bir sürü olmadığındanHer 3 saniyede bir liste kutusundan satırı oku?

+0

Hey, bu harika. Sorun nedir? 1) Bunu yapmaya çalıştığınız kodu sağlamak için [değiştirebilir] ve 2) aslında neler olduğunu açıklayan bir açıklama yapabilirsiniz. – Will

cevap

0

bunu nasıl diğer bir yolu kullanarak Task Parallel Library

private readonly int _delayInMiliSeconds = 3000; 
private CancellationTokenSource _token; 
private bool _isStoped; 

public void StartUpdate() 
{ 
    if (this._isStoped) 
    { 
     throw new InvalidOperationException(); 
    } 

    this._token = new CancellationTokenSource(); 
    this.Update(); 
} 

public void StopUpdate() 
{ 
    if (this._isStoped) 
    { 
     throw new InvalidOperationException(); 
    } 

    this._isStoped = true; 
    this._token.Cancel(); 
} 

private void Update() 
{ 
    Task.Factory.StartNew(async() => 
    { 
     while (!this._token.IsCancellationRequested) 
     { 
      await Task.Delay(TimeSpan.FromMilliseconds(this._delayInMiliSeconds), this._token.Token); 

      //your repeted action has to be called here 
     } 
    }, this._token.Token); 
} 
1

burada, ben bir şey okumak istiyorsa ne yapardım olan her 3 saniye: yukarıdaki kod bir peri ile bir zamanlayıcı örneğini olacak

Timer timer = new Timer(3000);  // Timer in milliseconds (3 seconds) 
timer.AutoReset = true;    // Auto reset the timer 
timer.Elapsed += (sender, args) => 
{ 
    // 1. Read the list box 
    // 2. Disply read item in text box 
}; 
timer.Start(); 

3 saniye süren ve Elapsed olayı her 3 saniyede bir patlayacaktır.

+0

Bu harika :) sıradaki satırları okuyabildiğimi biliyorsunuz, bu yüzden bir satır okuyup bir satır ilerledikten sonra bir sonraki satırı okuyup hareket ettiriyorsunuz? – Waypast

+0

Öğeleri liste kutusundan alabilirsiniz: "var myItems = myListBox.Items" ve ardından bunların üzerinden yineleyin: foreach (myItems öğesinde var öğe) {...} '. Öğe zaten ListBox'ta sıralanırsa, aynı sırayla çekilmelidir. Sıralanmamışlarsa, bunları sıralamak için bir şeyler bulmanız gerekir. – Ingenioushax

0

UI'nizin çalışmaya devam etmesi için ayrı bir iş parçacığında bunu yapmanız gerekir. System.Threading.Timer'u nasıl kullanacağınızı görün ve ihtiyaçlarınıza göre uygulayın.