VS2008 сбои при переключении в режим проектирования в очень большом решении

StackOverflow https://stackoverflow.com/questions/4585909

  •  14-10-2019
  •  | 
  •  

Вопрос

Это происходит на нескольких машинах разработчиков, которые они только что получили. У нас есть очень большое решение, 70+ проектов. Если вы откроете какую -либо форму, даже новую пустую форму, в режиме дизайна, против большую часть времени вылетает. Создание меньшего решения с некоторыми из тех же проектов не вызывает проблемы. И не все разработчики имеют это. У нас есть VS2008 SP1, Windows XP, и это VB.net Winforms. Я искал Google, но все аварий VS, кажется, связаны с аддинами или WPF. Они не новые машины, но были отображены отделом ИТ, я думаю, что все они скопированы с одного и того же изображения.

Исключение:

System.AccessViolationException was unhandled
  Message="Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
  Source="System.Drawing"
  StackTrace:
       at System.Drawing.SafeNativeMethods.Gdip.GdipFillRectangleI(HandleRef graphics, HandleRef brush, Int32 x, Int32 y, Int32 width, Int32 height)

       at System.Drawing.Graphics.FillRectangle(Brush brush, Int32 x, Int32 y, Int32 width, Int32 height)

       at System.Drawing.Graphics.FillRectangle(Brush brush, Rectangle rect)

       at ystem.Windows.Forms.Design.Behavior.SelectionBorderGlyph.Paint(PaintEventArgs pe)

       at     
System.Windows.Forms.Design.Behavior.BehaviorService.PropagatePaint(PaintEventArgs pe)

       at System.Windows.Forms.Design.Behavior.BehaviorService.AdornerWindow.WndProc(Message& m)


       at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

       at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, 
IntPtr wparam, IntPtr lparam)

К вашему сведению: если вам интересно, как получить исключение из Visual Studio. Я открыл 2 копии Vs. Я прикрепил первый ко второму в разделе «Инструменты Прикрепить процесс». Затем открыл решение во втором и разбил его.

Это было полезно?

Решение 2

Похоже, что это связан с видео драйвером, хотя машины - это разные модели с разным видео. Все затронутые машины работают с видео драйвером, отключенным в диспетчере устройств. Установка последнего видео драйвера исправила все, кроме одного из них. Тот, который не зафиксирован, теперь работает, если вы сдвинете аппаратный ползунок ускорения практически до NO. Трюк слайдера не работал раньше, поэтому я не рассматривал видео как проблему. Мы, вероятно, будем жить без аппаратного ускорения на этой машине.

У нас было несколько машин год назад, которые не показывали бы дизайнера наборов данных, и нам пришлось отказаться от аппаратного ускорения на тех, кто заставил их показать. Таким образом, несколько наших машин уже работают.

Другие советы

Это похоже на ошибку в GDI+. Я предполагаю, что он не справляется с ресурсами очень хорошо. Windows дает процесс квоту о таких вещах, как ручки, окна и ресурсы GDI, такие как ручки и кисти. Когда он превышает 10000 из них, он отказывается давать больше, предполагая, что утечка в программе является проблемой.

Вы можете увидеть это с помощью TaskMgr.exe, вкладки процессов. View + Select Columns, Tick Handles, пользовательские объекты и объекты GDI. Как только один из них приближается к квоте, всевозможные страдания начинают происходить. Обычно рисовать странности кстати. Но, безусловно, код может сбой, когда он не проверяет, что вызов API возвращает NULL. Слишком распространен в неуправляемом коде.

GDI+ был много Улучшенный для Vista, Devs действительно не должны больше управлять XP в наши дни. Win7 довольно хорош. Также единственный реальный способ научиться справляться с UAC и изоляцией сеанса 0.

Как возможный обходной путь, спросите на Superuser.com, как увеличить квоту процесса по умолчанию. Это где -то в реестре.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top