Пользователи иногда получают вышеупомянутую ошибку при использовании нашего приложения (VB.Net, Winforms, используя v2 платформы). Я не могу воспроизвести это. Вызов стека выглядит следующим образом:
: System.AccessViolationException: попытка чтения или записи в защищенную память. Это часто указывает на то, что другая память повреждена.
в System.Windows.Forms.UnsafeNativeMethods.CallWindowProc (IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
в System.Windows.Forms.NativeWindow.DefWndProc (Message & m)
в System.Windows.Forms.Control.DefWndProc (сообщение & m)
в System.Windows.Forms.Control.WndProc (сообщение & m)
в System.Windows.Forms.ComboBox.WndProc (Message & m)
в ControlEx.AutoCompleteCombo.WndProc (Message & m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message & m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message & m)
в System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Код для ControlEx.AutoCompleteCombo.WndProc выглядит следующим образом:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Try
If Not m_fReadOnly Then
MyBase.WndProc(m)
Else
Select Case m.Msg
Case WM_LBUTTONDOWN, WM_LBUTTONDBLCLK
' do nothing
Case Else
MyBase.WndProc(m)
End Select
End If
Catch ex As OutOfMemoryException
Throw New OutOfMemoryException("Exception during WndProc for combo " & Me.Name, ex)
End Try
End Sub
Добавлена обработка ошибок, чтобы мы могли определить, какая комбо вызывает проблему, когда мы получаем исключение OutOfMemoryException.
Любые подсказки относительно причин, по которым это будет высоко цениться! : -)