2017-01-03 7 views
2

Я программирую в VB6, потому что мы используем устаревший код и аппаратное обеспечение (внешняя электроника).VB6 таймеры убийства

Мои программы построены вокруг таймеров, где я буду использовать задачи в программировании ОС. Таймеры работают до тех пор, пока их работа не будет выполнена. Установлен флаг и запускается другой таймер.

Я хочу, чтобы контрольный таймер управлял другими таймерами. Когда таймеры не производят никакого результата или ждут события реального мира, которые никогда не наступают (сделайте цикл while) Я хочу убить таймер. В электронике у нас есть «таймер сторожевой собаки», он проверяет, продолжает ли код (и дает результаты). Я хочу сделать таймер сторожевой собаки в VB6.

Таймеры в vb6 имеют Timer.interval и Timer.enabled. Я не могу убить таймер этими инструментами. Я могу запретить запуск таймера. Я знаю несколько способов убить цикл. Как подсчет кругов и разрыв, когда достигнут максимум. Или даже проверку проверки флага.

Есть ли способ убить таймер VB6? Если нет, то лучший способ избежать бесконечных циклов?

Боковой вопрос: есть ли способ указать, какие таймеры работают?

ответ

4

Вы ответили на свой вопрос, установив .enabled на false, чтобы предотвратить следующий интервал от обжига.

Чтобы «убить» таймер, когда его интервал уже запущен, вам нужно будет проверить флаг и выйти из текущего метода/с. (Нет другого способа, поскольку все это происходит на одной нити)

Есть ли способ указать, какие таймеры работают?

Dim ctrl As VB.Control 
For Each ctrl In Me 
    If TypeOf ctrl Is VB.Timer Then 
     Debug.Print ctrl.Name, "running: "; ctrl.Enabled And ctrl.Interval > 0 
    End If 
Next 
+1

Плюс один. Ниже приведена [ссылка на документацию Timer Microsoft VB6] (https://msdn.microsoft.com/en-us/library/aa445561 (v = vs.60) .aspx) для хорошей оценки. В нем говорится: «Всякий раз, когда для свойства' Enabled' элемента управления Timer' установлено значение «True», а свойство «Interval» больше 0, событие Timer ожидает период, указанный в свойстве «Interval'». – MarkJ

 Смежные вопросы

  • Нет связанных вопросов^_^