powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Timer на уровне модуля
10 сообщений из 10, страница 1 из 1
Timer на уровне модуля
    #39701179
Фотография Лори
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение на VB.NET состоит из нескольких форм.
Нужно, чтобы в какой-то момент времени, приложение заканчивало свою работу. Например, при запуске, включался бы таймер, и каждый час проверял флажок в текстовом файле: если там "1", то продолжает работать, если "0"- то завершает работу.
Приложение запускается из Sub Main в Module1, т.е. формы запускаются через Application.Run(FormХ)
Если создать Timer в Module1, то при передаче управления формам, этот таймер перестает работать, и запускается только при закрытии форм (передаче управления обратно в модуль). Можно ли сделать так, чтобы таймер продолжал свою работу?

P.S. Создавать таймеры в каждой форме не подходит, т.к. количество форм достаточно велико.
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701186
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В .NET три вида таймеров, выбери подходящий.
https://yandex.ru/search/?text=timers in .net
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701205
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лори,
В главной форме должен работать всегда.
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701263
Фотография Лори
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Лори,
В главной форме должен работать всегда.
Тоже так думал. Вот примерчик, где таймер не работает. Если закомментить Application.Run(Form1), то он работает.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Module Module1
    WithEvents Timer1 As New Timers.Timer
    Dim exitFlag As Boolean = False
    Private Sub Timer1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed

        'Если в файле flag.txt "0", то приложение прекращает работу
        Dim aFile As New IO.FileStream(Application.StartupPath & "\flag.txt", IO.FileMode.Open)
        Dim srSettingsIni As New IO.StreamReader(aFile, System.Text.Encoding.Default)

        If srSettingsIni.ReadLine() = "0" Then
            Timer1.Stop()
            exitFlag = True
        End If

        srSettingsIni.Close()
    End Sub

    Sub Main()
        Application.Run(Form1)

        Timer1.Interval = 5000
        Timer1.Start()

        While exitFlag = False
            Application.DoEvents()
        End While

        MsgBox("Завершение Main")
    End Sub
End Module
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701270
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ты СНАЧАЛА таймер запусти, а потом уже форму. У тебя же управление не возвращается, таймер не программируется.
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701272
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лори
Код: vbnet
1.
2.
3.
        While exitFlag = False
            Application.DoEvents()
        End While

Дикая жесть.
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701275
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лори,

запустите таймер до Application.Run, вместо exitFlag = true используйте Application.Exit.
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701291
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВ .NET три вида таймеров, выбери подходящий.
https://yandex.ru/search/?text=timers in .net
Тогда уж лучшн так: http://krishna-paudel.blogspot.com/2009/07/comparing-timer-classes-in-net.html
Petro123Лори,
В главной форме должен работать всегда.
Зависит от класса таймера.
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701295
Фотография Лори
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаю таймер до Application.Run, все то же самое (
...
Рейтинг: 0 / 0
Timer на уровне модуля
    #39701317
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛориЗапускаю таймер до Application.Run, все то же самое (Поставь точку останова в Timer1_Elapsed
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Timer на уровне модуля
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]