Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1142560956
Nostradamus
2006-03-17 05:02
2006.04.23
Многоязычные русурсы


11-1125182052
ebta
2005-08-28 02:34
2006.04.23
just a little bug v2.10


15-1143810430
Dimodim
2006-03-31 17:07
2006.04.23
Спам , методы борьбы со спамом


2-1144691010
Дарья
2006-04-10 21:43
2006.04.23
listbox


15-1143703380
azl
2006-03-30 11:23
2006.04.23
Delphi 2006





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский