Делаю секундомер который должен работать в отдельном от 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. Как её исправить?
this.Invoke(new Action(() =>
{
label1.Text = string.Format("{0:HH:mm:ss:ff}", stopwath);
}));
Ты не можешь обращаться в GUI из другого потока.
GUI привязан к потоку в котором был создан.
Тебе нужно воспользоваться Invoke или async/await
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости