В .NET 2.0 есть старая ошибка.Однако эта ошибка возникает только в терминальном сервере или в сеансе удаленного рабочего стола / помощника.
Дополнительные сведения и обходные пути: http://support.microsoft.com/kb/953389
Обновление январь 2017 г. Microsoft удалилаСтатья KB953389Это все еще находится в кэше некоторых поисковых систем.
Вот что говорит:
Действие
Вы используете Microsoft .NET Framework2.0 Приложение Windows Forms в сеансе сервера терминалов.Затем вы минимизируете окно сеанса терминального сервера, отключаетесь от сеанса или блокируете сеанс.Результат
При возобновлении работы в сеансе сервера терминалов приложение Windows Forms отображает следующее исключение и стек вызовов:
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.
at System.Drawing.Graphics.Clear(Color color)
at System.Windows.Forms.ToolStripProfessionalRenderer.OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs e)
at System.Windows.Forms.ToolStripProfessionalRenderer.OnRenderToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs e)
at System.Windows.Forms.ToolStripRenderer.DrawToolStripContentPanelBackground(ToolStripContentPanelRenderEventArgs e)
at System.Windows.Forms.ToolStripContentPanel.OnPaintBackground(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmEraseBkgnd(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.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.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Причина
Это связано с ошибкой в Microsoft .NET Framework 2.0.Среда выполнения Windows Forms пытается вызвать System.Drawing.Graphics.Clear, не проверяя, работает ли она на безопасном рабочем столе.Как описано в следующей ссылке MSDN, если метод Clear вызывается на защищенном рабочем столе в сеансе сервера терминалов, может возникнуть исключение ExternalException, в результате чего объект Graphics будет находиться в несогласованном состоянии.
Graphics.ClearМетод
http://msdn.microsoft.com/en-us/library/system.drawing.graphics.clear.aspx
Разрешение
Вы можете обойти это поведение, подключив обработчик события к событию Application.ThreadException.Это событие позволяет коду приложения обрабатывать необработанные исключения, возникающие в потоках Windows Forms.Это позволило бы вызывать ваш код вместо стандартного диалогового окна исключений Windows Forms.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler Application.ThreadException, AddressOf Application_ThreadException
End Sub
Sub Application_ThreadException(ByVal sender As Object, ByVal e As System.Threading.ThreadExceptionEventArgs)
If TypeOf (e.Exception) Is System.Runtime.InteropServices.ExternalException Then
Return
End If
MessageBox.Show(e.Exception.Message, Me.Text)
End Sub