Форум: "Основная";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизОтключение функции Ghost Window в Windows XP Найти похожие ветки
← →
API © (2006-03-20 00:00) [0]Если окно верхнего уровня не отвечает на сообщения несколько секунд, система считает, что окно зависло и замещает его вторым окном, которое имеет такой же порядок элементов, расположение, размер и визуальные атрибуты, как и исходное окно. Пользователь получает возможность перемещать окно, масштабировать его и даже закрывать приложение. Тем не менее, доступны только эти действия, потому что приложение на самом деле зависло. Находясь в режиме отладки, система не создает второе окно. (С) Microsoft
Однако это может быть не зависание приложения, а относительно долгое ожидание какого-либо действия, например, в случае возникновения коллизии при доступе к БД. При этом TimeOut установлен, например, в 10 сек., и в результате имеем перемигивающее второе окно.
Поэтому вопрос: Как, в случае (возможно) длительной операции не дать Windows XP создать это второе окно?
← →
Eraser © (2006-03-20 00:33) [1]
> API © (20.03.06 00:00)
наверное лучший выход из ситуации - выполнять длительные операции в отдельном потоке.
← →
API © (2006-03-20 00:49) [2]выполнять длительные операции в отдельном потоке
В том то и дело, что они - не длительные. Но бывают случаи, когда выполнение затягивается.
Я уже привел пример с БД. В общем случае, запись документа в БД - миллисекунды. Но если вдруг кому-то вздумалось в этот момент формировать большой отчет, или выполнить какую-либо операцию, в результате чего таблица может быть заблокирована, то эти считанные миллисекунды могут превратиться и 5, и в 10 сек. Пользователь подождать может, а вот Windows XP ждать не хочет.
Реализовывать запись в БД в отдельных потоках ради единичных случаев - слишком большая роскошь.
Просто визуальный эффект некрасивый. Да и пользователь может занервничать. Хотелось бы просто отключить эту функцию на время операции записи в БД.
← →
DrPass © (2006-03-20 01:52) [3]
> Да и пользователь может занервничать. Хотелось бы просто
> отключить эту функцию на время операции записи в БД
Ну а пользователь вместо двигающегося окна получит такое же, но неподвижное, да еще и с затирающейся картинкой. Чем лучше-то?
← →
Eraser © (2006-03-20 01:57) [4]
> API © (20.03.06 00:49) [2]
ну тогда перед опирацией, которая может затянуться, надо показывать юзеру панельку/окошко, где написано мол "Погоди 5 сек!".
(после показа окна/панельки надо сразу же сделать UpdateWindow и Application.ProcessMessages, чтобы всё гарантированно отобразилось).
← →
API © (2006-03-20 09:18) [5][3] DrPass © (20.03.06 01:52)
Ну а пользователь вместо двигающегося окна получит такое же, но неподвижное, да еще и с затирающейся картинкой. Чем лучше-то?
А большинство пользователей, до тех пор, пока на экране ничего не меняется и крутятся песочные часики указателя мыши - просто сидят и ждут. И если операция, вместо миллисекунд - будет иногда выполняться несколько секунд - мало кто заметит.
А вот если через 2-3 сек после инициации операции записи в БД - экран вдруг станет белым - нервничают многие. Хотя, через несколько секунд (или даже миллисекунд) - окно перерисовывается - система опять работоспособна. Это как ненастроенная аварийная сирена с красной мигалкой на стене в курилке - рявкнет на 2 сек и замолчит. Пользователи в таких случая очень нервничать начинают, и звонят сразу же в техподдержку. Т.е., мне не нужно ложных срабатываний Ghost Window - при некоторых, возможно, длительных операциях, я хочу регулировать этот таймаут.
Т.е., чего конструктивного и полезного подсказать можете?
ну тогда перед опирацией, которая может затянуться, надо показывать юзеру панельку/окошко, где написано мол "Погоди 5 сек!".
Спасибо за замечательную подсказку.
Однако, я уже писал, что "операция, которая может затянуться" - явление редкое и непредсказуемое. Хотя, если Вы можете мне предоставить критерий оценки продолжительности обращения к произвольной таблице произвольной БД на сетевом сервере в конкретно выбранный момент - я с радостью Вас выслушаю.
Заметьте еще, что, если операция на самом деле затянется, то вместо этого замечательного окошка с обнадеживающей надписью "Подождите" - также появится Ghost Window, уже без надписи и (в общем случае) белого цвета. Смысл?
чтобы всё гарантированно отобразилось
Что делать, чтобы все гарантированно отобразилось - поверьте, я сам решу. Но все равно спасибо... :)
← →
wicked © (2006-03-20 11:11) [6]хм.... мож и не в тему, но пришло в голову - система может решить, что окно зависло по очень простому критерию - оно не отвечает/не обрабатывает сообщения.... даже если юзер ничего не делает, а просто мышкой туда-сюда возит, за секунду окну приходят сотни и тысячи сообщений.... для эксперимента можно попробовать создать "длительную операцию" и не дышать на окно......
← →
SVM (Perm) (2006-03-20 12:23) [7]http://support.microsoft.com/default.aspx?scid=kb;en-us;817611&Product=winxp
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c