Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск сторонней программы в цикле

289
15 февраля 2010 года
Jeyson
207 / / 20.04.2000
Здравствуйте. Столкнулся с такой задачей. Кратко: моя программа формирует текстовый файл исходных данных. Сторонняя программа читает этот файл, выполняет вычисления и формирует свой текстовый файл результатов расчета. После этого моя программа читает файл результатов расчета и при необходимости опять формирует файл исходных данных.... и так повторяется до достижения определенного условия в цикле. В режиме отладки все проходит гладко - выполняется нескольно итераций цикла. При запуске на выполнение происходит лишь одна итерация... может скорость выполнения на столько велика, что файлы не успевают читаться/записываться? Как с этим бороться? Спасибо.
289
15 февраля 2010 года
Jeyson
207 / / 20.04.2000
Ответ нашел. Просто надо притормозить прогу свою. Апишная функция Sleep(...) в скобках задержка в миллисекундах....
416
15 февраля 2010 года
MaitreDesir
380 / / 02.01.2008
Sleep - не вариант. По крайней мере это индусизм.
WaitForSingleObject в руки.
7.4K
15 февраля 2010 года
T...H
159 / / 28.12.2008
Функции MsgWaitForMultipleObjectsEx, SignalObjectAndWait, WaitForMultipleObjectsEx и WaitForSingleObjectEx отличаются от остальных функций ожидания, тем, что они могут произвольно выполнить предупреждающую операцию "занято-ждать" (alertable wait operation). В предупреждающей операции "занято-ждать", функция может возвратить значение, когда выполнены заданные условия, но она может также возвратить значение и тогда, если система поставила в очередь процедуру завершения ввода-вывода или APC для исполнения ждущим потоком.
7.4K
15 февраля 2010 года
T...H
159 / / 28.12.2008
Цитата:
WaitForSingleObject
DWORD WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds);
Возвращаемое значение
Если функция успешно завершает свою работу, то возвращаемое значение указывает на причину завершения работы функции. Оно может принимать одно из следующих значений:
WAIT_ABANDONED - указанный объект является мютексом, который не был освобожден потоком, которому он принадлежит, перед завершением данного потока. Принадлежность мютекса вызывающему потоку гарантируется. Поэтому этот объект остался неотмеченным;
WAIT_OBJECT_0 -указанный объект находится в отмеченном состоянии;
WAIT_TIMEOUT - истек период ожидания, а объект остался неотмеченным.

Если функция аварийно завершает свою работу, она возвращает значение WAIT_FAILED. Более подробную информацию об ошибке можно получить, вызвав функцию GetLastError.
Аргументы
hHandle - дескриптор объекта. Список типов объектов, дескрипторы которых могут использоваться в качестве данного аргумента, содержится в примечании. В Windows NT дескриптор должен иметь уровень доступа SYNCHRONIZE.
dwMilliseconds - определяет интервал времени, измеряемый в миллисекундах. По истечении этого интервала времени, если указанный объект остается неотмеченным, функция завершает свою работу. Если данный аргумент имеет нулевое значение, функция проверяет состояние объекта и немедленно прекращает свою работу. Если аргумент dwMilliseconds имеет значение INFINITE, то функция ждет отметки объекта неограниченное время


 
Код:
while(WaitForSingleObject(hStopEvent, 1000) != WAIT_OBJECT_0)
   {

/***************************************************************/
  // Главный цикл  службы.
/***************************************************************/
   }
5
15 февраля 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: Jeyson
Ответ нашел. Просто надо притормозить прогу свою. Апишная функция Sleep(...) в скобках задержка в миллисекундах....


А дождаться завершения дочернего процесса что не позволяет?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог