none
Tentativa de leitura ou gravação em memória protegida. Normalmente, isso é uma indicação de que outra memória está danificada RRS feed

  • 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 Then

                foto.ImageLocation = abrirfoto.FileName
            End If

    _____________________________________________________________

    Agradeço a todos desde já.

    terça-feira, 27 de fevereiro de 2018 06:51

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

    terça-feira, 27 de fevereiro de 2018 11:11

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

    terça-feira, 27 de fevereiro de 2018 11:11
  • olá, veja este vídeo ele mostra como resolver essa questão

    https://www.youtube.com/watch?v=s2Gb9pOUNU8

    terça-feira, 27 de fevereiro de 2018 12:08
  • 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.

    quarta-feira, 28 de fevereiro de 2018 22:19
  • 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.

    quarta-feira, 28 de fevereiro de 2018 22:21
  • Bom dia.

    Poste o código inteiro onde apresenta o erro, se possível, do formulário todo.


    MARIANO1776

    quinta-feira, 1 de março de 2018 09:41
  • 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

    quinta-feira, 1 de março de 2018 13:39
  • Realmente não vejo relação entre o problema citado e a versão do Access.

    Mas, se houver necessidade, nos retorne.


    MARIANO1776

    quinta-feira, 1 de março de 2018 13:53