У меня есть приложение C # windows form, которое запрашивает данные с подключенного устройства. В настоящее время я запускаю System.Timer.Timer, который запускается каждые 20 мс и получает данные из подключенного инструмента. Это работает нормально, но, конечно, пользовательский интерфейс перестает отвечать на запросы обновлений счетчиков данных, конечных результатов вычислений для данных и т. Д. И т. Д. Я также отображаю данные в паре окон OpenGL, так что происходит довольно много.
_timer1 = new System.Timers.Timer{
Interval = Convert.ToDouble(txtElapse.Text),
Enabled = true};
_timer1.Elapsed += Timer1Elapsed;
Затем я использую, а затем аннулирую форму, чтобы перерисовать OpenGL, и именно здесь выполняются все мои вычисления и т. Д.
Мой вопрос связан с многопоточностью, в какой момент или к какому объекту я применяю логику потока? Сам таймер? Если я делаю это, я не могу отладить, он просто сидит там. Я провел немало исследований, связанных с ThreadPools, Backgroundworker, Thread и т. Д., Но ничего для этой ситуации не сделал, поскольку считаю (ошибочно?), Что таймер по умолчанию работает в своем собственном потоке.