Пользователи иногда получают указанную выше ошибку при использовании нашего приложения (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.Control.Control.Windows (Сообщение & m) в System.Windows.Forms.Control.WndProc (Сообщение & m) в System.Windows.Forms.ComboBox.WndProc (Сообщение & m) в ControlEx.AutoCompleteCombo.WndProc (Сообщение & m) в System.Windows.Forms.Control .ControlNativeWindow.OnMessage (сообщение & m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc (сообщение & 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.
Мы будем очень благодарны за любые подсказки относительно причин этого! :-)