|
|
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, когда сами MS исправят свой Excel (у меня 365) так, что при открытии больших-больших файлов в шапке не показывается "(не отвечает)", тогда и я поправлю)))) Совет хороший и правильный. Учту! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 18:51 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Круговая порука рукожопов, да простит меня Рустам... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 18:55 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, полностью поддерживаю - Excel'ю 30 лет, а никак в отдельный потом загрузку не вынесут. И пресловутую ошибку с _FilterDatabase до сих пор не исправят, и не сделают штатную возможность выставления ширины колонок в миллиметрах... Но также интересно, неужели в программах Дмитрия Сибирякова весь ввод/вывод вынесен в отдельный поток? И даже из файлов чтение в отдельном потоке (там тоже может подвиснуть внешнее устройство)? И с БД работа вся асинхронная? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 19:08 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry TimokhovИ с БД работа вся асинхронная? Ты не поверишь... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 19:13 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, у меня нет оснований тебе не верить. Я, конечно, "закис" в своем приложении, когда сервер с локальной гигабитной сети. И мелочь при обращении к серверу поточить смысла просто нет. Отчеты вот надо отпоточить. В планах стоит. Интересно, что у тебя за приложение, в котором тотальное асинхронное общение с БД? Что за тип приложения? Чем технически это делаешь? Своя библиотека или штатными средствами Delphi пользуешься? Расскажи, плз, интересно же. Первый раз встречаю приложение на Delphi с полностью асинхронным взаимодействием с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 20:55 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry TimokhovЧем технически это делаешь? Один юнит размером в три экрана, который выполняет любую процедуру в фоне, сопровождая это модальным окном прогресса. При том, что вся работа с БД вынесена в отдельный слой больше не требуется. И нет, эта асинхронность не тотальна. Запросы-однострочники для выборки-изменения одной записи (каковых в логике подавляющее большинство) идут синхронно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 21:12 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDimitry TimokhovЧем технически это делаешь? Один юнит размером в три экрана, который выполняет любую процедуру в фоне, сопровождая это модальным окном прогресса. При том, что вся работа с БД вынесена в отдельный слой больше не требуется. А когда выполняешь любую процедуру (БД?) в фоне, чем к БД коннектишься? И интересно, как прогресс определяешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 21:34 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry TimokhovА когда выполняешь любую процедуру (БД?) в фоне, чем к БД коннектишься? Используется основной (единственный) коннект. Прогресс - по этапам обработки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 22:10 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDimitry TimokhovА когда выполняешь любую процедуру (БД?) в фоне, чем к БД коннектишься? Используется основной (единственный) коннект. Прогресс - по этапам обработки. Ок. Понятно. Всё логично. У меня тоже есть некоторые долгие запросы к БД в доп. потоке. Использую ADO, синхронно. Сам импортировал OLE либу (т.е. стандартными компонентами не пользуюсь). Даже, если бы пользовался асинхроном ADO, то там все равно нет А) прогресса и Б) не прервешь (я не нашел). Т.к. ADO по определению имеет потоковую модель apartment, а не multithreaded, то долгие запросы делаю в отдельном коннекте, т.к. не могу использовать один ADODB.Connection из двух потоков. Критично то, что замирание на 5+ сек есть во встроенном скриптовом языке. На это я повлиять не могу. Пишут прикладные разработчики. Там есть и GUI и вычисления... Там уж не распоточишь это дело легко. Собственно, поэтому и влез в топик. Чтобы понять и разобраться с режимом Ghost, в который Windows принудительно переводит любое приложение через 5 сек, если то не вызывает PeekMessage или аналоги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2019, 22:49 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry TimokhovЧтобы понять и разобраться с режимом Ghost, в который Windows принудительно переводит любое приложение через 5 сек, если то не вызывает PeekMessage или аналоги. Собственно, если проверяется просто вызов Peek/GetMessage, то запуск фонового потока, создающего невидимое окно и таймер и крутящего цикл выборки сообщений, решит проблему "призракизации". А если это окно будет видимо, и будет показывать симпатичную анимашку или просто прогресс-бар, так совсем хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:08 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Только никакого VCL в фоновом потоке! Только WinAPI. Если CreateWindow слишком лениво, то помогут диалоги из ресурсов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:09 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Василий 2Dimitry TimokhovЧтобы понять и разобраться с режимом Ghost, в который Windows принудительно переводит любое приложение через 5 сек, если то не вызывает PeekMessage или аналоги. Собственно, если проверяется просто вызов Peek/GetMessage, то запуск фонового потока, создающего невидимое окно и таймер и крутящего цикл выборки сообщений, решит проблему "призракизации". А если это окно будет видимо, и будет показывать симпатичную анимашку или просто прогресс-бар, так совсем хорошо Погоди)) Правильно я понимаю, что ты говоришь о том, можно PeekMessage делать в доп. потоке для окна, созданного средствами WinAPI в этом потоке, и этого будет достаточно, чтобы Windows не перевел *все* приложение в режим ghost? Иными словами, ты считаешь, что достаточно делать PeekMessage в *любом* потоке процесса, а не обязательно в главном (первом) потоке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:19 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovОдин юнит размером в три экрана, который выполняет любую процедуру в фоне, сопровождая это модальным окном прогресса. А смысл? Ну то есть вот есть некий запрос, который открывается десять секунд. В чём преимущество открывать его в фоне, закрыв модальным окном, по сравнению с crSQLWait в основном потоке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:29 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry Timokhov, правильно, но хоть какое-то окно должно быть видимо, так как кто-то должен обрабатывать сообщения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:34 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
softwarerА смысл? Ну то есть вот есть некий запрос, который открывается десять секунд. В чём преимущество открывать его в фоне, закрыв модальным окном, по сравнению с crSQLWait в основном потоке? Не мне, но предположу. Так все равно же в "(не отвечает)" впадает главная форма. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:38 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry TimokhovТак все равно же в "(не отвечает)" впадает главная форма. Для этого нужно куда больше времени. Столько, что и в форме "модального окна с прогрессом" пользователя не устроит (во всяком случае, меня бы не устроило). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:45 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Василий 2, В общем проверил: 1. Создал окно на WinAPI (выбрал из другого своего проекта). Оно живое, обрабатывает очередь. Даже перерисовывается. 2. Все равно - через 5 сек в главном окне появляется "(не отвечает)". Вывод - Windows анализирует очередь главного (первого) потока. А не всех, которые принадлежат процессу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:52 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
softwarerНу то есть вот есть некий запрос, который открывается десять секунд. В чём преимущество открывать его в фоне, закрыв модальным окном, по сравнению с crSQLWait в основном потоке? 1) Приложение не впадает в статус "Не отвечает", как уже сказали. 2) Окна не становятся белыми если провести над ними другое окно (переключиться на другое приложение). Что, собственно, следствие п.1. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 18:52 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
softwarerпо сравнению с crSQLWait в основном потоке? А если ты имеешь ввиду запустить запрос в фоне, а в главном потоке всего лишь сменить курсор, то это, конечно, тоже неплохо, но придётся отдельно заботиться о том, чтобы пользователь этим курсором не тыкал куда не надо. А мне лень. ShowModal отбивает возможность "потыкать" автоматически. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 19:03 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov1) Приложение не впадает в статус 2) Окна не становятся белыми Ясно. Мне эти соображения представляются важными, когда время открытия запроса измеряется минутами. Ради секунд я не стал бы заморачиваться. За десять секунд условный пользователь не особо успеет переключиться в другое приложение, схватить его окно и начать таскать над первым даже если предположить, что ему вдруг зачем-то понадобилось это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2019, 19:35 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Dimitry Timokhovkealon(Ruslan), Василий 2, В общем проверил: 1. Создал окно на WinAPI (выбрал из другого своего проекта). Оно живое, обрабатывает очередь. Даже перерисовывается. 2. Все равно - через 5 сек в главном окне появляется "(не отвечает)". Вывод - Windows анализирует очередь главного (первого) потока. А не всех, которые принадлежат процессу. Любопытно, хотя и странно. Какое дело Винде, какой там из потоков главный... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 11:30 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Василий 2Dimitry Timokhovkealon(Ruslan), Василий 2, В общем проверил: 1. Создал окно на WinAPI (выбрал из другого своего проекта). Оно живое, обрабатывает очередь. Даже перерисовывается. 2. Все равно - через 5 сек в главном окне появляется "(не отвечает)". Вывод - Windows анализирует очередь главного (первого) потока. А не всех, которые принадлежат процессу. Любопытно, хотя и странно. Какое дело Винде, какой там из потоков главный... Чем больше думаю про эти ghost-окна, тем больше понимаю, что сделано в Windows все логично. Будь у приложения 1000 потоков, Винда "ляжет" в цикле проверять их все. Поэтому проверяет только очередь основного потока и порожденные им окна. Видимо предполагается, что основной поток <=> главное окно. Хотя Windows могли бы лучше это все задокументировать. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 12:23 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
11.07.2019 12:23, Dimitry Timokhov пишет: > Видимо предполагается, что основной поток <=> главное окно. > Хотя Windows могли бы лучше это все задокументировать. ИМХО. Код: pascal 1. 2. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 12:33 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
Василий 2Dimitry Timokhovkealon(Ruslan), Василий 2, В общем проверил: 1. Создал окно на WinAPI (выбрал из другого своего проекта). Оно живое, обрабатывает очередь. Даже перерисовывается. 2. Все равно - через 5 сек в главном окне появляется "(не отвечает)". Вывод - Windows анализирует очередь главного (первого) потока. А не всех, которые принадлежат процессу. Любопытно, хотя и странно. Какое дело Винде, какой там из потоков главный...тогда скорее всего проверяются все главные окна через SendMessageTimeOut, это логично бы было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 12:49 |
|
||
|
Параметр реестра HungAppTimeout
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)Василий 2пропущено... Любопытно, хотя и странно. Какое дело Винде, какой там из потоков главный...тогда скорее всего проверяются все главные окна через SendMessageTimeOut, это логично бы было Вот и я про то же - могли бы лучше описать. Я лично не нашел чего-то внятного. Только пояснения на форумах и минимум текста в описании MSDN по теме... И шикарная фраза "[This function is not intended for general use. It may be altered or unavailable in subsequent versions of Windows.]" тут https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-ishungappwindow... Видимо, думают, а не "сносить" ли такие приложения сразу в Windows 11+?))) Хотя все это не важно - ghost в любом случае лучше, чем без него. Т.е. если вызвать DisableProcessWindowsGhosting, то вообще все мрет. А с гостом хоть отрисовывается и показывает, что "(не отвечает)". Т.е. имитация жизни))) И дает надежду, что отомрет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2019, 13:01 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39836083&tid=2039271]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
156ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 459ms |

| 0 / 0 |
