2016-04-08 2 views
0

3秒ごとにリストボックスから行を読み込み、その項目をテキストボックスに表示しようとしていますか?しかし、私はループを作るために何をする必要があるのか​​分かりません。どんな助けもありがとう。3秒ごとにリストボックスから行を読み込みますか?

+0

ねえ、それは素晴らしいです。どうしましたか?あなたは1)あなたがこれをやろうとしているコードと2)実際に何が起こっているのかの記述を提供するために[編集]することができます。 – Will

答えて

0

あなたがそれを行うことができますどのようにもう一つの方法は、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

を使用している上に行くために情報の全体の多くがないので、ここで私はすべての3何かを読みたいと思った場合、私はどうなるのかです秒:

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秒間経過すると、Elapsedイベントが3秒ごとに発生します。

+0

これは完璧です:)どのように私は順番に行を読むことができるように行を読むことができるだろう知っていますか? – Waypast

+0

リストボックスから項目を取得するだけで、 'var myItems = myListBox.Items'を呼び出すことができます。' foreach(var item in myItems){...} 'アイテムがすでにListBoxでソートされている場合は、同じ順序でアイテムを取得する必要があります。それらがソートされていない場合は、それらをソートするために何かを見つける必要があります。 – Ingenioushax

0

UIを引き続き使用するには、分離したスレッドでこれを行う必要があります。 System.Threading.Timerの使い方を見て、必要に応じて実装してください。

関連する問題