Vba excel остановить таймер

Применение функции Timer в VBA Excel для приостановки выполнения приложений и определения времени работы процедур. Примеры использования.

Timer – это функция без аргументов, которая возвращает количество секунд, прошедших после полночи. Значение типа Single.

На сайте разработчика сказано, что в Windows функция Timer возвращает дробные части секунды. О порядке дробной части там информации нет. Попробуем выяснить это сами, запустив в редакторе VBA Excel подпрограмму со строкой

MsgBox «Timer = « & Timer

Информационное окно с текущем значением функции Timer
Исходя из результата, отображенного в информационном окне MsgBox, будем считать, что функция Timer возвращает сотые доли секунды. Во время экспериментов с процедурой Vremya из Примера 2 результат вычисления разницы между двумя значениями функции Timer достигал шести знаков после запятой, и один раз – семи.

Примеры использования в VBA Excel

Пример 1
Присвоение значения функции Timer переменной:

Пример 2
Код VBA Excel для приостановки приложений:

Dim Start As Single, Pause As Single

Start = Timer

Pause = 0.5

Do While Timer < Start + Pause

   DoEvents

Loop

  • Start – переменная, в которую записывается первоначальное значение таймера.
  • Pause – время в секундах (до сотых значений), на которое следует приостановить программу.

Функция DoEvents во время выполнения цикла передает управление операционной системе для обработки других событий. По рекомендации разработчиков не следует использовать DoEvents в тех случаях, когда

  • приостановленная процедура может быть запущена повторно из другой части вашего кода;
  • другие приложения могут обратиться к приостановленной процедуре.

Код для приостановки приложений можно использовать как отдельную подпрограмму, вставляя ее имя с указанием интервала в нужные места других процедур:

Sub StopSub(Pause As Single)

Dim Start As Single

Start = Timer

Do While Timer < Start + Pause

   DoEvents

Loop

End Sub

Проверяем работоспособность подпрограммы StopSub:

Sub Vremya()

Dim x As Single

x = Timer

Call StopSub (3)

MsgBox Timer x

End Sub

Точный или почти точный результат будет только при использовании в качестве аргумента целых секунд, в том числе и в примере кода, предложенного разработчиком.

Такой способ приостановки приложений можно использовать в VBA Excel при создании бегущей строки.

Пример 3
Функцию Timer можно использовать для замера времени работы процедуры. Мы ее уже использовали для определения времени выполнения подпрограммы StopSub:

Sub Vremya()

Dim x As Single

x = Timer

Call MySub

MsgBox Timer x

End Sub

Замените MySub на имя вашей подпрограммы и запустите код в редакторе VBA Excel. Информационное окно MsgBox покажет время работы процедуры.


 

OlegSmirnov

Пользователь

Сообщений: 137
Регистрация: 21.07.2017

#1

15.03.2019 21:25:09

Доброго вечера всем.
Помогите решить непростой вопрос.

Вопрос касается операции со временем.
Макрос устанавливает таймер на 7 секунд.
Я делаю следующие операции — жму на кнопку «включить таймер», затем выжидаю пару секунд и жму на кнопку «выключить таймер».
Затем закрываю рабочую книгу.
Но тут происходит следующее:
Через 5 секунд эта закрытая книга — сама собой открывается и макрос в нем — продолжает работать по таймеру.
Такое ощущение, что после нажатия на кнопку отключения и закрытия книги — таймер каким-то образом продолжил свою работу.

Как надежно отключить таймер, чтобы он намертво вырубался и начинал работать только тогда — когда я вновь нажму на кнопку «включить таймер» ?

То есть если запустить таймер, выждать секунду, отключить таймер и закрыть книгу — чтобы эта книга не открывалась бы сама по себе.
Причем не нужно ставить каких-то скриптов на событие «закрытия книги».
Таймер должен надежно отключатся именно кнопкой.

Макрос выглядит так:

Код
Option Explicit

Private boolStop As Boolean

Sub Включить_таймер()
    boolStop = False
    Вставить_данные
End Sub

Private Sub Вставить_данные()
    
    Dim lr As Long
    
    If boolStop = True Then
        Exit Sub
    End If
    
    lr = Cells(Rows.Count, "C").End(xlUp).Row
    If lr = 1 Then
        If Range("C1").Value <> "" Then
            lr = lr + 1
        End If
    Else
        lr = lr + 1
    End If
    
    Cells(lr, "C").Value = Range("A1").Value + (Range("B1").Value * lr - Range("B1").Value)
    
    Application.OnTime Now + TimeValue("00:00:05"), "Вставить_данные"
Макрос7
End Sub

Sub Выключить_таймер()
    boolStop = True
End Sub

Прикрепленные файлы

  • файл-пример.xlsm (20.58 КБ)

Изменено: OlegSmirnov16.03.2019 00:22:30

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

Изменено: БМВ15.03.2019 21:34:40

По вопросам из тем форума, личку не читаю.

 

OlegSmirnov

Пользователь

Сообщений: 137
Регистрация: 21.07.2017

#3

15.03.2019 21:41:10

БМВ, что-то не работает.
Выдает ошибку:
Runtime error 1004: Method OnTime of object _Application failed

Подсвечивает строку :

Код
Application.OnTime EarliestTime:=TimeValue("00:00:07"), _
Procedure:="Вставить_данные", Schedule:=False

Прикрепленные файлы

  • файл-пример(2).xlsm (21.25 КБ)

Изменено: OlegSmirnov15.03.2019 21:50:23

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#4

15.03.2019 21:55:54

ну нельзя ж  просто бездумно копировать

Скрытый текст

По вопросам из тем форума, личку не читаю.

 

БМВ, так… ну вроде теперь книга повторно не открывается.
Спасибо за помощь.

 

в программировании не бывает «надежно отключить таймер»
бывает отключить или не оключить, т.е. это сделано или это не сделано
случай, когда пытались сделать, но не получилось — относиться к варианту «не сделано»

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

#7

15.03.2019 23:59:02

Цитата
OlegSmirnov написал:
Как надежно отключить таймер, чтобы он намертво вырубался и начинал работать только тогда — когда я вновь нажму на кнопку «включить таймер» ?

— кстати это довольно надёжно описано как ни странно в описании этого «таймера» и в справке, и на MSDN :)

 

OlegSmirnov

Пользователь

Сообщений: 137
Регистрация: 21.07.2017

#8

16.03.2019 00:13:00

Нет, все равно что-то не работает.
Вот такой макрос даже с использованием строчки

Код
Application.OnTime NextStart, "Вставить_данные", Schedule:=False

Все равно отказывается работать.

Выдает ту же самую ошибку : Runtime error 1004: Method OnTime of object _Application failed
И подсвечивает данную строку.

Макрос выглядит так:

Код
Option Explicit
Public NextStart As Date
Private boolStop As Boolean

Sub Включить_таймер()

'Выключить_таймер

    boolStop = False
    Вставить_данные

End Sub

Sub Вставить_данные()
     
   
    If boolStop = True Then
        Exit Sub
    End If

[A2] = [A2] + 1
   NextStart = Now + [E10]
   Application.OnTime Now + [E10], "Вставить_данные"

End Sub
Sub Выключить_таймер()

    boolStop = True
    'MsgBox "Таймер отключен.", vbInformation
End Sub

Sub Выключить_таймер_надежно()

Application.OnTime NextStart, "Вставить_данные", Schedule:=False

End Sub

Почему в одном случае данная строчка работает, а в другом случае — выдает ошибку ?

Изменено: OlegSmirnov16.03.2019 00:46:48

 

Hugo

Пользователь

Сообщений: 23251
Регистрация: 22.12.2012

Потому что NextStart — совершенно ничего не означает, не нужно это слово переводить :)
Прочитайте уже хелп…
Логика такая — когда запускаете таймер, то указываете ТОЧНОЕ время срабатывания. Точное, а не какое-то там текущее плюс пара минут.
Если нужно выключить — используете это значение времени. Удобнее в переменной, и не важно как она называется.

Изменено: Hugo16.03.2019 00:26:55

 

OlegSmirnov

Пользователь

Сообщений: 137
Регистрация: 21.07.2017

#10

16.03.2019 00:39:27

Цитата
Hugo написал:
Логика такая — когда запускаете таймер, то указываете ТОЧНОЕ время срабатывания. Точное, а не какое-то там текущее плюс пара минут.

Ничего не понимаю.
А в этой строчке из сообщения 4  — не точное время что ли было указано ?

Код
NextStart = Now + TimeValue("00:00:07")
 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#11

16.03.2019 00:47:35

OlegSmirnov, посмотрите внимательно тот код что я написал выше, я специально менял его минимально, только дополнил необходимым и закомментил ненужное.
Ну наверно не просто так там вот так сделано

Код
    NextStart = Now + TimeValue("00:00:07")
    Application.OnTime NextStart, "Вставить_данные"

нужно ж запомнить как-то это точное время.

По вопросам из тем форума, личку не читаю.

 

БМВ, у вас там в начале кода — не хватало строки пропуска ошибок On Error Resume Next
И поэтому при повторном нажатии у меня выдавало ошибку, а при одиночном нажатии — все работало.

 

БМВ, в общем все теперь работает.
Спасибо за уточнение.

 

БМВ

Модератор

Сообщений: 21378
Регистрация: 28.12.2016

Excel 2013, 2016

#14

16.03.2019 01:03:40

OlegSmirnov, не у меня а у Вас, и это не заблокирует  повторные клацания по кнопке старт. А так как каждый раз будет переписано значение NextStart, то стоп отключит только последнее. Ну тут уже надо понимать что нужно и по факту или кнопки блокировать или алгоритм менять. А так просто можно , да и правильнее, чтоб не плодить ошибок , обнулять и проверять

Код
If NextStart = 0 Then Exit Sub
Application.OnTime NextStart, "вставить_данные", Schedule:=False
NextStart = 0

По вопросам из тем форума, личку не читаю.

0 / 0 / 0

Регистрация: 02.10.2012

Сообщений: 62

1

Запуск и остановка Таймера

25.02.2016, 16:00. Показов 16030. Ответов 10


Студворк — интернет-сервис помощи студентам

Уважаемые форумчане, добрый день!
В просторах интернета по вопросу работы ТАЙМЕРА на VBA, я нашел много разных примеров, однако из-за слабой подготовки в программировании мне пока тяжело со всем этим разобраться. На одном из сайтов наше простой пример, где на форме идет время и есть кнопка.
Я пробую на форме UserForm1 через Label1 и Label2 передавать значения номера вопроса и работы таймера. Сама форма запускается, идет подсчет нажатия кнопки, отражается № вопроса и время. Но если я кликаю по кнопке 5 раз (количество вопросов) но время еще осталось, то все равно через некоторый промежуток времени (время, которое осталось до завершения) всплывает окно «время вышло». Причем время еще придостаточно но все равно вылазит окно…..
Как можно остановить таймер. И могут ли на форме присутствовать 2 таймера (для создания другого окна)



0



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

26.02.2016, 09:34

2

Можно не запускать таймер после какого-то нажатия кнопки

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public iTimer As Date
Public st As Boolean
 
Sub TimerStart()
UserForm1.Label2.Caption = Format(iTimer, "n:ss")
 If Not st Then Exit Sub
    iTimer = iTimer - TimeValue("0:00:01")
        If iTimer > 0 Then
           Application.OnTime Now + TimeValue("00:00:01"), "TimerStart"
        Else
            MsgBox "Вермя вышло!!!!"
        End If
End Sub
''''''''''''''''''
Private Sub UserForm_Activate()
st = True
'''''''''''''''''
    Case 5
        st = False
      MsgBox "таймер не запущен"

Можно применить АПИ таймер

Visual Basic
1
2
3
4
5
'Импорт API функци создания системного таймера.
Private Declare Function SetTimer Lib "user32" ( _
  ByVal hWnd As Long, ByVal IdTimer As Long, _
  ByVal uTimeOut As Long, ByVal TimerProc As Long _
) As Long



1



A_3485

0 / 0 / 0

Регистрация: 02.10.2012

Сообщений: 62

26.02.2016, 11:59

 [ТС]

3

Первый способ для меня, как мало грамотного в этих вопросах более понятен. Хочется уточнить пару моментов:
1).

Visual Basic
1
st = True, st = False

— через эту переменную идет включение и выключение таймера?
2).

Visual Basic
1
Public st As Boolean

— объявляем переменную для управления таймером?
3).

Visual Basic
1
If Not st Then Exit Sub

— эта строчка мне не очень понятна. Если перевести на русский, то ЕСЛИ st False, то выход из программы?



0



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

26.02.2016, 17:36

4

Ну как-то так: при загрузке формы запускаем таймер и после истечения времени проверяем состояние переменной. Если она True, то запускаем снова таймер.
После нужного нажатия кнопки назначаем st = false. В результате при истечении времени OnTime процедура TimerStart завершается и не происходит очередной запуск таймера Application.OnTime



0



A_3485

0 / 0 / 0

Регистрация: 02.10.2012

Сообщений: 62

09.03.2016, 09:11

 [ТС]

5

Доброго времени суток!
Alex77755, ваш код работает на УРА, но только для Excel (VBA). Я попробовал применить к VBA 6.0 выдает ошибку на :

Visual Basic
1
Application.OnTime

Что может быть не так?
Может для VBA 6.0 стоит применить Timer и привязать его к Label. Это я тоже пробовал, но не совсем понимаю как этот таймер должен работать с обратным осчетом.



0



es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

09.03.2016, 09:29

6

Цитата
Сообщение от A_3485
Посмотреть сообщение

Я попробовал применить к VBA 6.0


В VB6 есть свой компонент «таймер», который можно использовать без танцев с бубном.



0



0 / 0 / 0

Регистрация: 02.10.2012

Сообщений: 62

09.03.2016, 10:22

 [ТС]

7

Вот этот компонент я и не могу применить.
Понимаю, что через свойство Enable таймер запускается и отключается, через Timer1.Interval задаю время работы таймера (например 3 минуты Timer1.Interval = 30000), а как совместить это все вместе не понимаю. Тем более, что хочу, чтобы в Label отражалось время с обратным отсчетом.



0



SoftIce

es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

09.03.2016, 10:46

8

Цитата
Сообщение от A_3485
Посмотреть сообщение

время работы таймера (например 3 минуты Timer1.Interval = 30000

Ну, во-первых, 3 минуты — это будет 180000.
А во-вторых, это не время работы таймера, а его интервал.

Цитата
Сообщение от A_3485
Посмотреть сообщение

а как совместить это все вместе не понимаю

Например,так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub Form_Load()    'зарузка формы
    Timer1.Enabled = False 'таймер остановлен
    Timer1.Interval = 1000 'интервал таймера в миллисекундах
End Sub
 
Private Sub Command1_Click() 'кнопка запуска таймера
     Label1.Caption = "30"   'время работы таймера в секундах
     Timer1.Enabled = True   'запускаем таймер
End Sub
 
Private Sub Timer1_Timer() '
    Label1.Caption = Label1.Caption - 1 'при каждом тике таймера уменьшаем значение в Label  на единицу
    If Label1.Caption = "0" Then        'если время вышло
       Timer1.Enabled = False           'то останавливаем таймер
       MsgBox "Время вышло"             'выводим сообщение
    End If
End Sub
 
Private Sub Command2_Click() 'кнопка остановки таймера
     Timer1.Enabled = False  'останавливаем таймер
End Sub



0



0 / 0 / 0

Регистрация: 02.10.2012

Сообщений: 62

09.03.2016, 11:20

 [ТС]

9

SoftIce, спасибо за помощь. Сегодня вечером обязательно проверю и отпишусь.



0



0 / 0 / 0

Регистрация: 02.10.2012

Сообщений: 62

11.03.2016, 22:30

 [ТС]

10

SoftIce, спасибо за примеры. С ними мне все понятно. А каким образом в этот пример можно добавить обратный отсчет например 5 минут в формате 05:00, 04:59 и т.д.



0



SoftIce

es geht mir gut

11264 / 4746 / 1183

Регистрация: 27.07.2011

Сообщений: 11,437

11.03.2016, 23:00

11

Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата
Сообщение от A_3485
Посмотреть сообщение

апример 5 минут в формате 05:00, 04:59

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim n As Integer
Private Sub Form_Load()    'зарузка формы
    Timer1.Enabled = False 'таймер остановлен
    Timer1.Interval = 1000 'интервал таймера в миллисекундах
End Sub
 
Private Sub Command1_Click() 'кнопка запуска таймера
     n = 300                 'время работы таймера в секундах
     Timer1.Enabled = True   'запускаем таймер
End Sub
 
Private Sub Timer1_Timer() '
    n = n - 1                           'при каждом тике таймера уменьшаем значение  на единицу
    'Label1.Caption = FormatDateTime(CStr(n  60) & ":" & CStr(n Mod 60), vbShortTime)
     Label1.Caption = Format$(n  60, "00") & ":" & Format$(n Mod 60, "00")
    If n = 0 Then                       'если время вышло
       Timer1.Enabled = False           'то останавливаем таймер
       MsgBox "Время вышло"             'выводим сообщение
    End If
End Sub



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

11.03.2016, 23:00

11

Отключение таймера (Application.OnTime)

A_3485

Дата: Пятница, 30.09.2016, 10:35 |
Сообщение № 1

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 146


Репутация:

0

±

Замечаний:
40% ±


2007

Уважаемые форумчане, добры день!
У меня в Excel макросом запускается таймер на просмотр содержимого папки и если информация там есть, то происходит выполнение другой подпрограммы. Я не могу сообразить, как мне можно в случае необходимости выключить таймер (остановить выполнение программы) либо через кнопку или в самой программе через Exit Sub:
[vba]

Код

Private Sub Просмотр ()

x = «C:User1User2*.*»
file = Dir(x)

    If file <> «» Then
        Программа_1
    Else:
        If Time >= #2:00:00 PM# Then Exit Sub       

                Application.OnTime DateAdd(«s», 60, Now), «Просмотр»   

                End If
End Sub

[/vba]

 

Ответить

buchlotnik

Дата: Пятница, 30.09.2016, 10:40 |
Сообщение № 2

Группа: Заблокированные

Ранг: Участник клуба

Сообщений: 3442


Репутация:

929

±

Замечаний:
20% ±


2010, 2013, 2016 RUS / ENG

[vba]

Код

Public stop_ as Boolean
Private Sub Просмотр ()

x = «C:User1User2*.*»
file = Dir(x)

    If file <> «» Then
        Программа_1
    Else:
        If Time >= #2:00:00 PM# or stop_ Then Exit Sub       

                Application.OnTime DateAdd(«s», 60, Now), «Просмотр»   

                End If
End Sub

Sub StopUpdate()
    stop_ = False
End Sub

[/vba]

Сообщение отредактировал buchlotnikПятница, 30.09.2016, 10:40

 

Ответить

RAN

Дата: Пятница, 30.09.2016, 11:40 |
Сообщение № 3

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

OnTime(EarliestTime, Procedure, LatestTime, Schedule)


Быть или не быть, вот в чем загвоздка!

 

Ответить

A_3485

Дата: Пятница, 30.09.2016, 13:15 |
Сообщение № 4

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 146


Репутация:

0

±

Замечаний:
40% ±


2007

что-то не очень понял, как это работает. Если например из кода убрать:
[vba]

Код

If Time >= #2:00:00 PM# or stop_ Then Exit Sub  

[/vba]

и оставить просто :
[vba]

Код

If stop_ Then Exit Sub  

[/vba]
тогда программа работает если переменная stop_ = TRUE.

 

Ответить

A_3485

Дата: Пятница, 30.09.2016, 14:03 |
Сообщение № 5

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 146


Репутация:

0

±

Замечаний:
40% ±


2007

RAN, Если я запускаю код как отельную процедуру или в основном коде ничего не выходит, выдает ошибку:
[vba]

Код

Application.OnTime Time, «Просмотр», , False  

[/vba]
Так, тоже выдает ошибку:
[vba]

Код

Private Sub Стоп ()
Application.OnTime EarliestTime:=Time, Procedure:=»Просмотр», Schedule:=False
End Sub

[/vba]

Сообщение отредактировал A_3485Пятница, 30.09.2016, 14:12

 

Ответить

Manyasha

Дата: Пятница, 30.09.2016, 14:59 |
Сообщение № 6

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

A_3485, попробуйте так:
[vba]

Код

Public t As Date
Private Sub Просмотр()
    If t < Now Then Exit Sub
    ‘x = «C:User1User2*.*»
    x = ThisWorkbook.Path & «»
    file = Dir(x)
    If file <> «» Then
        Программа_1
    End If
    Application.OnTime DateAdd(«s», 2, Now), «Просмотр»
    t = Now + 2 / 24
End Sub
Sub StopUpdate()
    t = Now
    Debug.Print «stop «, Time
End Sub
Sub StartUpdate()
    t = Now + 2 / 24
    Просмотр
End Sub

[/vba]

К сообщению приложен файл:

timer.xlsm
(17.7 Kb)


ЯД: 410013299366744 WM: R193491431804

 

Ответить

A_3485

Дата: Пятница, 30.09.2016, 15:17 |
Сообщение № 7

Группа: Проверенные

Ранг: Форумчанин

Сообщений: 146


Репутация:

0

±

Замечаний:
40% ±


2007

Manyasha, спасибо

 

Ответить

RAN

Дата: Пятница, 30.09.2016, 16:34 |
Сообщение № 8

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

[vba]

Код

Sub qq()
    Static t As Date
    If Dir(ThisWorkbook.Path & «Книга11.xlsx») <> «» Then
        Application.OnTime t, «qq», , True
        MsgBox «QQ»
    Else
        MsgBox «WW»
        t = Now + TimeValue(«00:00:10»)
        Application.OnTime t, «qq»
    End If
End Sub

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

Метод Timer.Stop ()

.NET Framework (current version)

Опубликовано: Октябрь 2016

Останавливает таймер.

Пространство имен:   System.Windows.Forms
Сборка:  System.Windows.Forms (в System.Windows.Forms.dll)

Синтаксис

C#

C++

F#

VB

Public Sub Stop

Комментарии

Таймер также можно остановить, задав Enabled Свойства false. Объект Timer может быть включен и отключен несколько раз в одном сеансе приложения.

Вызов Start после отключения Timer путем вызова Stop вызовет Timer перезапуск прерванной интервал. Если ваш Timer имеет значение для интервала 5000 миллисекунд, и вызывать Stop на около 3000 миллисекунд, вызов Start приведет к Timer ожидать 5000 миллисекунд перед порождением Tick событий.

Примечание

Вызов Stop для какого-либо Timer в Windows Forms приложения может вызвать сообщения от других Timer компоненты в приложении для обработки немедленно, так как все Timer компоненты работают на основной поток приложения. При наличии двух Timer компонентов, одно значение 700 миллисекундах и один набор для 500 миллисекунд, и вызывать Stop на первом Timer , приложение может сначала получает обратный вызов события для второй компонент. Если это вызывает проблемы, рассмотрите возможность использования Timer класса в System.Threading имен вместо.

Примеры

В следующем примере кода реализуется простой интервальный таймер, вызывающий аварийный сигнал каждые пять секунд. При подаче сигнала MessageBox отображает количество время начала сигнала и пользователю предлагается ли таймер должны продолжать работу.

C#

C++

VB

Public Class Class1

Private Shared WithEvents myTimer As New System.Windows.Forms.Timer()

Private Shared alarmCounter As Integer = 1

Private Shared exitFlag As Boolean = False

‘ This is the method to run when the timer is raised.

Private Shared Sub TimerEventProcessor(myObject As Object, _

ByVal myEventArgs As EventArgs) _

Handles myTimer.Tick

myTimer.Stop()

‘ Displays a message box asking whether to continue running the timer.

If MessageBox.Show(«Continue running?», «Count is: « & alarmCounter, _

MessageBoxButtons.YesNo) = DialogResult.Yes Then

‘ Restarts the timer and increments the counter.

alarmCounter += 1

myTimer.Enabled = True

Else

‘ Stops the timer.

exitFlag = True

End If

End Sub

Public Shared Sub Main()

‘ Adds the event and the event handler for the method that will

‘ process the timer event to the timer.

‘ Sets the timer interval to 5 seconds.

myTimer.Interval = 5000

myTimer.Start()

‘ Runs the timer, and raises the event.

While exitFlag = False

‘ Processes all the events in the queue.

Application.DoEvents()

End While

End Sub

End Class

Информация о версии

.NET Framework
Доступно с 1.1

См. также

E nabled
Класс Timer
Пространство имен System.Windows.Forms

Понравилась статья? Поделить с друзьями:
  • Vba excel остановить процедуру
  • Vba excel остановить выполнение цикла
  • Vba excel остановить выполнение программы
  • Vba excel ориентация текста
  • Vba excel округлить до сотых