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

P.S. Создавать таймеры в каждой форме не подходит, т.к. количество форм достаточно велико.
...
Рейтинг: 0 / 0
12.09.2018, 04:10
    #39701186
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
В .NET три вида таймеров, выбери подходящий.
https://yandex.ru/search/?text=timers in .net
...
Рейтинг: 0 / 0
12.09.2018, 07:14
    #39701205
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
Лори,
В главной форме должен работать всегда.
...
Рейтинг: 0 / 0
12.09.2018, 09:32
    #39701263
Лори
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
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
12.09.2018, 09:43
    #39701270
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
Так ты СНАЧАЛА таймер запусти, а потом уже форму. У тебя же управление не возвращается, таймер не программируется.
...
Рейтинг: 0 / 0
12.09.2018, 09:44
    #39701272
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
Лори
Код: vbnet
1.
2.
3.
        While exitFlag = False
            Application.DoEvents()
        End While

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

запустите таймер до Application.Run, вместо exitFlag = true используйте Application.Exit.
...
Рейтинг: 0 / 0
12.09.2018, 10:10
    #39701291
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
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
12.09.2018, 10:15
    #39701295
Лори
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
Запускаю таймер до Application.Run, все то же самое (
...
Рейтинг: 0 / 0
12.09.2018, 10:45
    #39701317
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Timer на уровне модуля
ЛориЗапускаю таймер до Application.Run, все то же самое (Поставь точку останова в Timer1_Elapsed
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Timer на уровне модуля / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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