В Vista и более поздних версиях, если приложение перестает отвечать на запросы, диспетчер окон рабочего стола может обрабатывать его по необходимости (перемещать окно над ним, перетаскивать его и т. Д.), Поскольку он сохранил пиксельный буфер для него. Windows также пытается определить, когда приложение перестало отвечать на запросы после некоторого тайм-аута, и пытается сделать все возможное, - я считаю, что он затушевывает окно, добавляет «Не реагирует» на его заголовок и, возможно, некоторые другие эффекты.DWM и рисование неотвечающих приложений
Теперь у нас есть скин-приложение, которое использует оконные области и слоистые окна, и это не очень хорошо работает с этими эффектами. Мы разрабатывали XP, но заметили странный эффект при тестировании на Vista. В некоторых случаях приложение может потратить несколько минут на некоторые вычисления или обратные вызовы, и «если сообщение не было получено в течение 5 секунд, DWM объявит окно для зависания» (MSDN - Preventing Hangs in Windows Applications). Похоже, что когда это ударит, возникает странная графическая проблема: любые пиксели, которые будут на 100% прозрачными, из-за оконных областей становятся черными, что делает окно снова прямоугольным, с черным фоном. Кажется, есть другие аномалии, причем пиксели исходного окна немного смещаются в некоторых дочерних диалоговых окнах.
Я работаю над уменьшением таких задержек (в идеале Windows никогда не понадобится вступать в подобную ситуацию) и пытается поддерживать отзывчивость, пока она занята, но мне все же хотелось бы выяснить, что заставляет ее визуализировать , поскольку я не могу гарантировать, что смогу устранить все задержки.
В принципе, я просто хотел бы знать, что делает Windows, когда это происходит, и как я могу заставить приложение правильно работать с ним. Skinned приложения должны по-прежнему работать на Vista и позже, поэтому мне нужно выяснить, что я делаю, что нестандартно. Я даже не знаю точно, как искать информацию о том, как Windows теперь обрабатывает невосприимчивые приложения, так как мои поисковые запросы только возвращают людей, имеющих проблемы с невосприимчивыми к приложениям или очень рудиментарными объяснениями того, что DWM делает с такими приложениями. Черт, я даже не уверен, что это DWM, но это кажется вероятным. Любой потенциальный потенциал?
Фото проблемы; Снимки экрана не захватят эффект (обратите внимание, что буфер белого Диалога сдвигаются - он смещается точно на расстоянии было смещены от основных (синего) окон):
Unresponsive app http://i42.tinypic.com/15ee8wo.jpg
Эта страница [MSDN] (http://msdn.microsoft.com/en-us/library/dd744765 (VS.85) .aspx) говорит, что тайм-аут составляет пять секунд. – RyanCu