• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Работа программы из модуля

  • Автор темы BStudio
  • Дата начала
Статус
Закрыто для дальнейших ответов.
B

BStudio

Прошу помочь ;)

Проблема довольно проста.

В проекте (MS Visual Studio 2010 Ultimate) есть модуль и есть форма.
Тип будущего приложения: Служба Windows (иначе не нужно).
Автоматически запускаемый объект: Sub Main (так нужно)

Проблема в том, что мне, чтобы показать форму, нужно чтобы прошло 2 часа (к примеру). Я, соответственно, добавляю в модуль таймер, в событии Sub Main задаю ему интервал и включаю его. Но, он не работает т.е. ничего, дальше события Main не идёт.

Вот, как это примерно выглядит:


Код:
Module Code1
Public WithEvents Timer1 As System.Timers.Timer = New System.Timers.Timer()

Sub Main(ByVal cmdArgs() As String)
Timer1.Interval = 120 * 60000		'x120 Min
Timer1.Enabled = True
End Sub

Private Sub ДЗЫНЬ_ДЗЫНЬ(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Elapsed
Timer1.Enabled = 0
Dim MF As Form = New MainForm()
MF.Show()
MF = Nothing
End Sub
End Module

Убедительная просьба, свои мнения и взгляды на актуальность вопроса, его 'тупость' и подобные критерии, не относящимся к решению задачи, оставить при себе :p

+ Две красивых обои на ваш рабочий стол ;)

Kvadratiki_7099.jpg 953440963.jpg
 
A

alex77755

интервал у таймера, вроде, не может быть таким большим.
Попробуй запомнить время запуска. А таймером проверять разницу между текущим временем
 
B

BStudio

:) НЕТ! Сделал интервал 1 сек. (1000) - всё равно ничего не продолжается дальше, чёрт возьми, Sub Main'a.

Q: Почему так уверенно говорю, что не продолжается дальше Sub Main'a
A: Потому что проверял каждую строчку исполнения старыми, но эффективными, дедовскими методами. MessageBox'ами. Всё идёт.. только не совсем всё... Помогите, pls... Я уже так не могу.. :KillMe:
 
T

Tanya

Вот, чисто теоретически (ибо нет времени проверять):

1) Почему не срабатывает таймер - не успевает. По коду, задаем интервал, делаем Enabled и следующая строка - End Sub, а поскольку это Sub Main, то это окончание работы программы.

2) Что (наверное ))) можно сделать: в Sub Main открывать форму невидимой, на которой запускается таймер (или может не на форме таймер, это определяем методом проб), который в требуемое сделает форму видимой. Скорее всего при создании формы управление программой будет передано этой форме и пока она не закроется End Sub не сработает.
 
B

BStudio

Tanya,
однозачное вам 'Спасибо', но вот как-раз-то дело с того и началось, что мне нужно было убрать
своё приложение из Диспетчер задач Windows > (вкладка) Приложения, а если есть форма, то, как я понял,
его оттуда никак не убрать (т.к. это не MS Visual Basic 6, в котором есть
замечательнейший класс App (App.TaskVisible = False))

Есть предположение, вставить перед End Sub что-то вроде:
Код:
Dim i As Byte = 1
Do While i > 0
i = 1
Loop
Но возникает актуальный вопрос: 'Это сильно будет систему грузить ?'
И: 'Рекурсия ?'

Если рекурсия, то:
Код:
Dim i As Long
e1: If i > 9223372036854775807 Then i += 1 Else i = 0
GoTo e1
=> вопрос первый меня волнует больше

а поскольку это Sub Main, то это окончание работы программы.

А если из Sub Main вызвать ещё что-то, а там таймер запустить ? :eek:fftop:
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!