|
|
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
Дали мне проект на доработку, и что-то мне один цикл как-то не внушает доверия. Перед этим циклом запускается оператор для конвертации word файла в pdf (файл посылается на печать на виртуальный принтер, который формирует pdf -ки). ниже описанный цикл используется для того, чтобы программа ждала, пока файл сформируется. Т.е. он исполняется до тех пор, пока не появится файл. Мне, как чайнику и самонедоучке, интересно - это нормальный способ или все-таки что-то есть получше? Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 01:39 |
|
||
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
Ну, если работает, значит нормальный способ! Мы использовали задержку в 3 сек. (на экране загоралось красивое окошко "Формирование файла"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 11:06 |
|
||
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
Tea-potМне, как чайнику и самонедоучке, интересно - это нормальный способ или все-таки что-то есть получше? Я не проверял, но предполагаю что в таком виде будет замедление процесса за счет частого обращения к файловой системе. Я бы сделал проверку FileExist раз в 0.5 сек, примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 11:54 |
|
||
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
Ну и конечно в том цикле нет проверки не отменил ли пользователь операцию. В таком случае цикл - не завершится, так как файл не будет создан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 11:56 |
|
||
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Я бы сделал проверку FileExist раз в 0.5 сек, примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. в этот иф вообще можно не попасть ... никто не гарантирует "Mod(Cpu(), 500) = 0" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 15:47 |
|
||
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
zuzu Anatoly Moskovsky Я бы сделал проверку FileExist раз в 0.5 сек, примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. в этот иф вообще можно не попасть ... никто не гарантирует "Mod(Cpu(), 500) = 0" Согласен :) Но принцип ясен и так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 16:46 |
|
||
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
Tea-potМне, как чайнику и самонедоучке, интересно - это нормальный способ или все-таки что-то есть получше? Код: plaintext 1. 2. 3. Есть несколько моментов. 1. Самое опасное, это то, что приложение в этом режиме полностью работоспособно, т.е. юзер может жать все, до чего дотянется, и это сработает. Обычно ведет к свалу. 2. Загрузка процессора будет 100% 3. Если процесс умер до создания файла-семафора, то ждать долго придется. Я бы сделал респонс-окно для блокировки интерфейса, в котором повесил бы кнопку отмены и реакцию на попытки закрытия окна юзером. Вместо yield использовал бы sleep из winapi. А еще лучше пускать процесс через winapi CreateProcess, тогда можно контролировать процесс: жив ли он, прибили ли его и т.п. Тогда и семафор в виде файла не понадобится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 17:56 |
|
||
|
Приостановка программы пока формируется файл
|
|||
|---|---|---|---|
|
#18+
Oleg1А еще лучше пускать процесс через winapi CreateProcess, тогда можно контролировать процесс: жив ли он, прибили ли его и т.п. ...я б тоже так делал, ну и про WaitForSingleObject не забыть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2006, 18:56 |
|
||
|
|

start [/forum/topic.php?fid=15&fpage=75&tid=1337920]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 393ms |

| 0 / 0 |
