Запуск внешней программы, контроль работает ли еще она через таймер. Не могу понять глюк. - VB

Узнай цену своей работы

Формулировка задачи:

Грубо: появился некий файл в формате A, надо проконвертировать его в формат Б и отобразить на форме.
Конвертацию осуществляем внешней proga.exe.
Алгоритм:
1) Запускаем proga.exe через Shell (завершения не ждем, т.к. конвертация требует чуть времени, неохота стопорить основной процесс)
2) Там же запускаем таймер.

3) Таймер тупо проверяет запущена ли еще proga.exe
и если НЕТ, то отображает файл, полученный как результат работы proga.exe


В таймере стоял Интервал=100.
И все хорошо и давно это использую, но дернул меня нечистый испытать это на старом слабеньком P-III.
И не сработало, т.е. картинка не отобразилась.
Стал искать причины, вставлять всякие дебаги и т.п..
И кажется мне причина в следующем:
Условие таймера
If IsProgaRun("proga") = False
похоже срабатывает до того
как появился процесс с именем "proga".
Т.е. таймер вышибает еще

до того как появился

процесс, завершение которого он должен контролировать.
А не после того как он

уже завершился

.
Может ли такое быть?
И если ДА то как лечить?
В-1)) не делать ничего. P-III это редкость, прога от этого не вылетает и в крайнем случае юзер может перещелкнуть записи в ListView и картинка в итоге отобразится.
В-2)) Если поставить Интервал=200 вместо 100, то проблема на P-III решается, но не слишком ли это много, с учетом того что на быстрых компьютерах конвертер частенько работает быстрее со многими файлами (не уверен, но...)
В-3)) Могу конечно сделать что-то типа
Но это потенциальный глюк (гораздо больший), если вдруг proga.exe вообще не запустилась и т.п.

Решение задачи: «Запуск внешней программы, контроль работает ли еще она через таймер. Не могу понять глюк.»

textual
Листинг программы
Or (Timer - ltime > 1)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы