два или более таймера с разными интервалами с C # - PullRequest
0 голосов
/ 15 марта 2010

У меня есть запись в БД, в которой заданы интервалы,

Предположим, что 1 таймер tm_5 будет проверять записи через каждые 5 минут, а таймер tm_10 будет проверять

записи после каждого10 минут,

Проблема в том, что он проверяет только записи для tm_5, а не для tm_10.

Я использую C # .net 2005 & MS sql server 2005.

Ответы [ 2 ]

0 голосов
/ 15 марта 2010

Вы должны изменить текст метки в потоке пользовательского интерфейса, чтобы этот код работал. См. Control.Invoke и Control.InvokeRequired для справки.

0 голосов
/ 15 марта 2010

Попробуйте это (добавьте label1 и label2 в форму с именем TimerTester).

public partial class TimerTester : Form
{
    public TimerTester()
    {
        InitializeComponent();
    }
    Timer _t1;
    Timer _t2;
    int _it1 = 0, _it2 = 0;
    private void Form1_Load(object sender, EventArgs e)
    {
        _t1 = new Timer() { Interval = 1000 };            
        _t1.Tick += new EventHandler(_t1_Tick);
        _t2 = new Timer() { Interval = 2000 };
        _t2.Tick += new EventHandler(_t2_Tick);
        _t1.Start(); _t2.Start();
    }
    void _t1_Tick(object sender, EventArgs e)
    {
        label1.Text = "t1: " + (_it1++).ToString();
    }
    void _t2_Tick(object sender, EventArgs e)
    {
        label2.Text = "t2: " + (_it2++).ToString();
    }        
}

Также обратите внимание, что вы должны использовать Forms.Timer, а не Threads.Timer (или использовать InvokeRequired и прочитать и понять, что это означает).

...