Как делать разные вещи синхронно с помощью таймера на 10 мс?
Теперь мне нужно сделать 3 вещи.
1. записывал эти данные в текстовый файл каждые 10 мс.
2. связь получите данные и покажите дальше
ListViewпо RS485 каждые 10 мс .
3. Нанесите данные на мой график.
mschartв реальном времени на 10 мс.
Я использовал
[DllImport("winmm.dll")]чтобы получить точность 10 мс.
И я использовал 3 потока для выполнения вышеуказанных заданий.
Но теперь я нашел данные текстового файла не всегда 10 мс,иногда 20 мс.
Так как же я мог бы программировать свой код, если бы хотел, чтобы все задания выполнялись синхронно в каждые 10 мс?
Спасибо!
Что я уже пробовал:
<pre><pre> <pre> mTimer1 = new TimePeriod(); threadWrite = new Thread(() => { mTimer1.AccurateTimer(this, new Action(WritetoTextFile), delay); }); thread1.IsBackground = true; thread1.Start(); mTimer2 = new TimePeriod(); thread2 = new Thread(() => { mTimer2.AccurateTimer(this, new Action(tmrChart_Tick), delay); }); thread2.IsBackground = true; thread2.Start(); mTimer3 = new TimePeriod(); threadDisplay = new Thread(() => { mTimer3.AccurateTimer(this, new Action(DisplayData), delay); }); thread3.IsBackground = true; thread3.Start();
F-ES Sitecore
Я думаю, что вам будет трудно сделать это с помощью c#.
Maciej Los
Похоже, вам не нужны 3 таймера. Вам нужно только одно и 3 действия в нем: 1) дамп данных, 2) чтение данных, 3) построение графика на графике.
johannesnestler
Запись в текстовый файл за 10 мс - это не сработает. Сделайте его потребительским производителем-шаблоном и оставьте таймеры в стороне. Сделайте это как можно быстрее. Диаграммы "реального времени" - это не тривиальная тема...
Ralf Meier
На мой взгляд, это не будет работать на 100% надежно в каждый момент времени.
Если вы работаете с таймерами или задачами - если методу требуется более 10 мс для завершения своей работы, вы не можете гарантировать это время цикла-некоторые действия не будут выполняться одновременно (например, запись данных в один и тот же файл).