Событие Elapsed Таймера

204
10 июня 2017, 12:17

Делаю секундомер который должен работать в отдельном от GUI потоке, но выводить в label время. Секундомер должен работать параллельно остальным операциям GUI :

    DateTime date;
    private void button1_Click(object sender, EventArgs e)  //запуск таймера
    {
        System.Timers.Timer timer = new System.Timers.Timer(10);
        timer.Elapsed += timer_Elapsed;
        timer.Start();
    }
    void timer_Elapsed(object sender, ElapsedEventArgs e)
    {
        date = DateTime.Now;
        long tic = DateTime.Now.Ticks - date.Ticks;
        DateTime stopwath = new DateTime();
        stopwath = stopwath.AddTicks(tic);
        label1.Text = string.Format("{0:HH:mm:ss:ff}", stopwath);
    }

Выходит ошибка СrossThreadMessagingException. Как её исправить?

Answer 1
   this.Invoke(new Action(() =>
                {
                       label1.Text = string.Format("{0:HH:mm:ss:ff}", stopwath);
                }));
Answer 2

Ты не можешь обращаться в GUI из другого потока.

GUI привязан к потоку в котором был создан.

Тебе нужно воспользоваться Invoke или async/await

READ ALSO
Ошибка при запуске nw.js [0607/131754:ERROR:process_info.cc(608)] range at 0x8b0b1d4600000000, size 0x32 fully unreadable

Ошибка при запуске nw.js [0607/131754:ERROR:process_info.cc(608)] range at 0x8b0b1d4600000000, size 0x32 fully unreadable

Кто-нибудь сталкивался с такой ошибкой при работе с nwjs? [0607/131754:ERROR:process_info

527
Pug - как закомментировать атрибут?

Pug - как закомментировать атрибут?

Я использую vuejs + pug + webpack, и у меня встала такая проблема

426
Как записать в файл json используя node.js

Как записать в файл json используя node.js

Стоит задача : Весь контент страницы, и прочая информация о настройках хранится в json файлеПользователь взаимодействует со страницей, меняет...

659