Как остановить выполнение программы на время работы таймера

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

asn
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 29.08.2005 (Пн) 8:18

Как остановить выполнение программы на время работы таймера

Сообщение asn » 13.02.2009 (Пт) 9:41

Пишу программу, которая работает через COM с "другим приложением". Программа передает в "другое приложение" команду и должна ожидать ее выполнения. "Другое приложение" может выполнить команду через 1 сек, а может и через 20 минут. Проверку выполнения команды "другим приложением" делаю через таймер, 1 раз в сек. Как можно сделать так, чтобы после включения таймера (Timer1.Start) код написанный ниже Timer1.Start не выполнялся до получения выполнения команды "другим приложением" и соответственно остановкой таймера?

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Re: Как остановить выполнение программы на время работы таймера

Сообщение Ramzes » 13.02.2009 (Пт) 10:32

Код: Выделить всё
bool hasCommand = false;
while (!hasCommand)
{
   hasCommand = GetCommand();
}

как-то так

Williams
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1280
Зарегистрирован: 06.05.2008 (Вт) 18:35
Откуда: System.Reflection.Williams (увидел себя в зеркале :))

Re: Как остановить выполнение программы на время работы таймера

Сообщение Williams » 13.02.2009 (Пт) 12:07

Ramzes писал(а):
Код: Выделить всё
bool hasCommand = false;
while (!hasCommand)
{
   hasCommand = GetCommand();
}

как-то так


Желательно еще в отдельном потоке и вставить Thread.Sleep(50);
И кстати можно обойтись вообще без таймера
И вы думаете, что вас оставят в живых после прочтения этого поста?

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Re: Как остановить выполнение программы на время работы таймера

Сообщение Sebas » 16.02.2009 (Пн) 9:35

2Ramzes.

Батенька, да Вы про асинхронные операции забыли? Да тот же BackgroundWorker...

2asn
если код после Timer.Start не будет выполняться, то программа будет "Висеть", как если бы всё работало в одном потоке. Логика ясна?
Ты должен отослать выполнение в другой поток и выйти, тем самым оставим взаимодействие с пользователем. Но вызванный поток, по завершению, должен вызвать процедуру обработки результатов в родительском потоке, которая и отразит результаты.

выше упомянутый класс к Твоим услугам...
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63

    TopList