Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Отключение функции 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
15-1143774590
Nic
2006-03-31 07:09
2006.04.23
Deep Forest


15-1143861929
Я туплю....
2006-04-01 07:25
2006.04.23
Почему не надо просить уставщих админов о помощи! :)


6-1136972246
NorthMan
2006-01-11 12:37
2006.04.23
Господа, подскажите плиз


2-1144492883
Std
2006-04-08 14:41
2006.04.23
TstringList


2-1144235805
Bryak
2006-04-05 15:16
2006.04.23
socket