Автор | Сообщение |
|
| |
Пост N: 5579
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.04.16 21:30. Заголовок: [?] PACK
Во время упаковки базы по команде Pack он же __dbPack() размером от 500 метров винда 7 пишет что приложение не отвечает....пока Pack не закончен. Базы пакую в цикле. Пробовал до Pack запускать отдельный поток в котором тупо в цикле пашет hb_releasecpu() а после Pack завершать поток...не помогло. Как то можно решить эту "проблему" ? PS на винде XP такого не замечал. PS-1 вариант не юзать Pack не предлагать (знаю о чём речь).
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|
|
| постоянный участник
|
Пост N: 4836
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.04.16 21:42. Заголовок: Dima пишет: Как то ..
Dima пишет: цитата: | Как то можно решить эту "проблему" ? |
| Можно тупо самому сделать аналог Pack. И при своём Pack раз через 100 или 500 записей выводить что-то на экран. Я тоже сталкивался с подвисанием проги в терминалке. А в МиниГуи подвисает чаще - делаю тогда DO EVENT.
|
|
|
|
| |
Пост N: 866
Зарегистрирован: 20.02.11
|
|
Отправлено: 08.04.16 21:50. Заголовок: Dima пишет: Как то ..
Dima пишет: цитата: | Как то можно решить эту "проблему" ? |
| не оно ? __dbPack( [<bBlock>], [<nEvery>] ) executes <bBlock> every <nEvery> records. релизить цпу не в потоке а внутри пака PS. мож быть надо не релизить цпу , а обслужить очередь сообщений ... в минигуи есть DoEvents() попробуй и ее HB_FUNC( DOEVENTS ) { MSG Msg; while( PeekMessage( ( LPMSG ) &Msg, 0, 0, 0, PM_REMOVE ) ) { hDlgModeless = GetActiveWindow(); if( hDlgModeless == NULL || ! IsDialogMessage( hDlgModeless, &Msg ) ) { TranslateMessage( &Msg ); DispatchMessage( &Msg ); } } }
|
|
|
|
| |
Пост N: 5580
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.04.16 22:41. Заголовок: Haz пишет: не оно ?..
Haz пишет: Идею понял. Спасибо. Andrey пишет: цитата: | Можно тупо самому сделать аналог Pack. |
| Уже , но работает медленнее.
|
|
|
|
| |
Пост N: 5581
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.04.16 23:03. Заголовок: Haz пишет: в минигу..
Haz пишет: цитата: | в минигуи есть DoEvents() попробуй и ее |
| Пробнул и по ходу надо добавить static HWND hDlgModeless = NULL; но винда пишет тож самое при ...сделал так для теста __dbPack({|| DOEVENTS()},100)... до лампочки ЗЫ Может просто тупо что то выводить на экран ?
|
|
|
|
| постоянный участник
|
Пост N: 4837
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.04.16 00:28. Заголовок: Dima пишет: Может п..
Dima пишет: цитата: | Может просто тупо что то выводить на экран ? |
| Попробуй ! Скорее всего поможет. Типа @ 0,0 say "+"
|
|
|
|
| |
Пост N: 5582
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.16 09:20. Заголовок: Andrey пишет: Попро..
Andrey пишет: цитата: | Попробуй ! Скорее всего поможет. Типа @ 0,0 say "+" |
| Неа , тоже до лампочки и у меня подозрение что блок кода не отрабатывает , так как на экран ни чего не выводится. Сделал так ni:=1 __dbPack({|| hb_dispoutat(0,0,ntoc(ni),"w/n"),ni++}) PS RDD ADSCDX
|
|
|
|
| |
Пост N: 867
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.16 10:19. Заголовок: Dima пишет: подозре..
Dima пишет: цитата: | подозрение что блок кода не отрабатывает , так как на экран ни чего не выводится. |
| Задай nEvery = 1
|
|
|
|
| |
Пост N: 5583
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.16 10:27. Заголовок: Haz пишет: Задай nE..
Haz пишет: Задавал , не пашет. С DBFCDX работает. Попробовал еще раз с созданием потока перед PACK и его убиением после. В нем делаю вывод на экран Seconds() , так вот при паке толстой базы тормозится даже поток что странно и как всегда получил месагу в окне "Приложение не отвечает"
|
|
|
|
| |
Пост N: 868
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.16 10:37. Заголовок: Dima пишет: (знаю ..
Dima пишет: Ну тогда тебе туда
|
|
|
|
| |
Пост N: 5584
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.16 10:40. Заголовок: Haz пишет: Ну тогда..
Haz пишет: Не хотелось идти таким путем
|
|
|
|
| |
Пост N: 414
Зарегистрирован: 17.06.10
|
|
Отправлено: 09.04.16 10:53. Заголовок: Во время упаковки ба..
цитата: | Во время упаковки базы по команде Pack он же __dbPack() размером от 500 метров винда 7 пишет что приложение не отвечает....пока Pack не закончен. |
| Поток, это конечно хорошо.. А может внешнюю аппликацию пускать, для PAKA ?
|
|
|
|
|
| |
Пост N: 5585
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.16 11:31. Заголовок: fil пишет: А может ..
fil пишет: цитата: | А может внешнюю аппликацию пускать, для PAKA ? |
| Не вариант. Пакнул толстую базу под DBFCDX , все норм ни чего не подвисло. Похоже проблема ADS или RDDADS
|
|
|
|
| |
Пост N: 869
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.16 12:01. Заголовок: Dima пишет: Пакнул ..
Dima пишет: цитата: | Пакнул толстую базу под DBFCDX , |
| пакуй драйвером DBFCDX они ж совместимы c ADSCDX. потом восстанавливай ADS как по умолчанию
|
|
|
|
| |
Пост N: 870
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.16 12:03. Заголовок: или переходи на ADT ..
или переходи на ADT там пак не нужен
|
|
|
|
| |
Пост N: 5586
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.16 12:05. Заголовок: Haz пишет: пакуй д..
Haz пишет: цитата: | пакуй драйвером DBFCDX они ж совместимы c ADSCDX. |
| Вариант однако , вот только не будет ли он по сети работать медленнее это вопрос...
|
|
|
|
| |
Пост N: 871
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.16 12:21. Заголовок: Dima пишет: вот то..
Dima пишет: цитата: | вот только не будет ли он по сети работать медленнее это вопрос... |
| У тебя базы на сервере ?? если так то упаковка конечно пойдет через клиента Есть для этого AdsPackTable() или грузи упаковкой робота живущего на сервере
|
|
|
|
| |
Пост N: 5587
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.16 12:25. Заголовок: Haz ушел думать......
Haz ушел думать......
|
|
|
|
| |
Пост N: 872
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.04.16 12:34. Заголовок: Dima пишет: ушел ду..
Dima пишет: а чего тут думать, подключай словари и используй сторед процедуру для упаковки PS отвечать не надо, знаю ответ
|
|
|
|
| |
Пост N: 5588
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.04.16 12:46. Заголовок: Haz пишет: PS отвеч..
Haz пишет: цитата: | PS отвечать не надо, знаю ответ |
| Да мне надо лампочку поменять а ты предлагаешь сделать ремонт в "квартире"
|
|
|
|
| |
Пост N: 5589
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.04.16 21:28. Заголовок: Haz Вопрос на засып..
Haz Вопрос на засыпку Ты сделал SQL запрос который работает более 5 секунд и ты не получаешь в заголовке окна что приложение не отвечает ? По умолчанию время ответа приложения 5000 милисек (для XP вроде больше) и живет оно в реестре. HKEY_CURRENT_USER\Control Panel\Desktop Параметр (в миллисекундах) HungAppTimeout То есть давая PACK базе по старинке , через 5 сек если PACK не закончен , реально получим временный завис , до окончания работы PACK. Вероятно тоже было бы и с индексированием толстой базы , но под ADS есть для этого случая AdsRegCallback (если его использовать) , что не приводит к мнимому зависанию.
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|