每隔3秒从列表框中读取一行?

时间:2016-04-08 14:47:31

标签: c# textbox listbox

我是否每3秒钟从列表框中读取一行并显示在文本框中读取的项目?但我不确定我需要做些什么才能让它循环。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分: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秒触发一次。

答案 1 :(得分: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);
}

答案 2 :(得分:0)

您应该在一个单独的线程中执行此操作,以便UI继续工作。 了解如何使用System.Threading.Timer并根据您的需求实施它。