Usuário com melhor resposta
Tentativa de leitura ou gravação em memória protegida. Normalmente, isso é uma indicação de que outra memória está danificada

Pergunta
-
Bom dia amigos, gostaria de uma solução para esse erro que vem me aterrorizando a 5 dias. Após esse tempo buscando respostas em vários lugares sem obter sucesso venho pedir que me ajudem.
Estou criando uma aplicação de cadastro com foto e o problema ocorre no (OpenFileDialog) do segundo FORM na qual utilizo para editar o cadastro.
O mais estranho é que no primeiro FORM o (OpenFileDialog) funciona perfeitamente e mais estranho ainda é que se eu abrir o (Dialog) no primeiro FORM o erro não é causado no segundo FORM, ou seja o erro só é causado caso eu abra o programa e vá direto para o segundo FORM e tente abrir o (Dialog).
Tentei diversas soluções tais como:
- Verificar se tenho permissões para gravar na pasta onde o banco de dados está.
- Mudar a versão do .Net
- Desabilitar o Visual XP
- Mudar o código de abertura do OpenFileDialog
Vou deixar abaixo a descrição do erro e qual linha o depurador está marcando.
______________________________________________________________
System.AccessViolationException was unhandled
HResult=-2147467261
Message=Tentativa de leitura ou gravação em memória protegida. Normalmente, isso é uma indicação de que outra memória está danificada.
Source=System.Windows.Forms
StackTrace:
em System.Windows.Forms.FileDialogNative.IFileDialog.Show(IntPtr parent)
em System.Windows.Forms.FileDialog.RunDialogVista(IntPtr hWndOwner)
em System.Windows.Forms.FileDialog.RunDialog(IntPtr hWndOwner)
em System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
em System.Windows.Forms.CommonDialog.ShowDialog()
em ProjetoTEOM.Form2.b_foto_Click(Object sender, EventArgs e)
em System.Windows.Forms.Control.OnClick(EventArgs e)
em System.Windows.Forms.Button.OnClick(EventArgs e)
em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
em System.Windows.Forms.Control.WndProc(Message& m)
em System.Windows.Forms.ButtonBase.WndProc(Message& m)
em System.Windows.Forms.Button.WndProc(Message& m)
em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
em System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
em Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
em ProjetoTEOM.My.MyApplication.Main(String[] Args)
InnerException:______________________________________________________________
A linha na qual a depuração marca como erro seria essa:
If abrirfoto.ShowDialog = System.Windows.Forms.DialogResult.OK Then
Antes de mudar o código o erro era acusado no abrirfoto.ShowDialog()
______________________________________________________________
O código completo que eu estou utilizando para abrir a imagem seria esse:
abrirfoto.Filter = "Imagem JPEG|*.jpg"
abrirfoto.Title = "Carregar Imagem..."
abrirfoto.Multiselect = False
abrirfoto.Reset()
If abrirfoto.ShowDialog = System.Windows.Forms.DialogResult.OK Thenfoto.ImageLocation = abrirfoto.FileName
End If_____________________________________________________________
Agradeço a todos desde já.
Respostas
-
Bom dia.
Veja a thread recente abaixo.
Se te ajudar, por gentileza, marque como resposta/útil.
Se não, poste o código para verificarmos.
https://social.msdn.microsoft.com/Forums/pt-BR/bcb24db3-095f-4cdd-b816-ab1cc50dd05e/tentativa-de-leitura-ou-gravao-em-memria-protegida-normalmente-isso-uma-indicao-de-que?forum=vsvbasicpt
MARIANO1776
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 28 de fevereiro de 2018 20:56
Todas as Respostas
-
Bom dia.
Veja a thread recente abaixo.
Se te ajudar, por gentileza, marque como resposta/útil.
Se não, poste o código para verificarmos.
https://social.msdn.microsoft.com/Forums/pt-BR/bcb24db3-095f-4cdd-b816-ab1cc50dd05e/tentativa-de-leitura-ou-gravao-em-memria-protegida-normalmente-isso-uma-indicao-de-que?forum=vsvbasicpt
MARIANO1776
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 28 de fevereiro de 2018 20:56
-
-
Boa noite Mariano, tudo bem?
Efetuei a troca do código porém está me dando um erro no na linha:
foto.Image.Dispose()
na qual diz assim:
Referência de objeto não definida para uma instância de um objeto.
Lembrando que o problema que tenho só acontece no form2
O form1 carrega o mesmo código porém não apresenta problemas e ao abrir o OpenFileDialog no form1 o form2 para de dar problema.
-
Olá Arlindo, assisti o video, porém 90% do vídeo está sendo mostrado o procedimento de gravação da imagem e não possuo problema para gravar, meu problema é o erro causado caso tente abrir o OpenFileDialog no Form2.
Lembrando que utilizo o mesmo código no form1 e funciona perfeitamente.
E mais estranho ainda é que se eu abrir o OpenFileDialog no form1 antes de ir para o form2 o OpenFileDialog do form2 para de dar problema.
-
-
Olá Mariano bom dia, depois de muito pesquisar e quebrar a cabeça encontrei a solução porém ainda não sei o real motivo de estar acontecendo isso.
Estava utilizando o Banco de dados do Access 2010 então converti o Banco de dados para o do Access 2003 e refiz as ligações, por incrível que pareça o problema sumiu.
Me parece que está havendo alguma incompatibilidade com o Banco de dados do Access 2010.
Estou utilizando do NetFrameWork 4.7.1
-