В Dev10 мы инвестировали в улучшение времени загрузки решения, делая асинхронную загрузку.К сожалению, из-за нехватки времени эта работа не вошла в Dev10, поэтому вместо этого мы решили, по крайней мере, немного улучшить взаимодействие с пользователем, предоставив пользователю обратную связь о том, что происходило во время загрузки решения.Первоначально это включало диалог, который представлял точную обратную связь о том, сколько проектов загружалось вместе с названием загружаемого в данный момент проекта.Раннее тестирование этого опыта показало, что после загрузки проектов часто возникала нетривиальная задержка (то есть вращающийся пончик и «не отвечающий» заголовок окна), и наличие диалога сделало эту задержку очень очевидной после закрытия диалога.Так что задержка?После загрузки проектов решения происходит 2 основных события.Сначала открываются все ранее загруженные документы / редакторы, и для некоторых файлов дизайнеров это может занять несколько секунд.Во-вторых и обычно намного хуже, мы называем NotifyOnAfterSolutionOpen
, который является точкой расширения в VS.Любой подписчик на это событие может запустить свой код в этот момент, и довольно часто этот код очень дорогой.Для Dev10 у нас не было времени, чтобы улучшить работу всех этих подписчиков, и поэтому было необходимо второе диалоговое окно, чтобы прояснить, что загрузка решения еще продолжается.Что действительно неприятно во втором диалоге, так это то, что он не сообщает вам, какая часть кода вызывает задержку, и хуже всего то, что управление прогрессом - это стиль выделения, который означает, что он не является детерминантным (в отличие от первого диалога).
Продвигаясь вперед, мы продолжаем исследовать способы сделать загрузку решения действительно асинхронной и поэтому никогда не показываем такие неприятные диалоги.В защиту диалога наше исследование показывает, что большинство людей предпочитают диалог модального статуса, а не вращающийся пончик или не отвечающий пользовательский интерфейс.Конечно, все предпочитают не задерживаться вообще, и мы работаем над этим для Dev11.