2015-08-07 3 views
3

Около недели назад программа, над которой я работаю, начала сбой с AccessViolationException всякий раз, когда я входил в определенное текстовое поле. Я уменьшил его до этого теста, но я из идей:AccessViolationException при вводе текстового поля

Imports System.Windows.Forms 

Public Class Start 
    Inherits System.Windows.Forms.Form 

    <STAThread()> 
    Public Shared Sub Main(args() As String) 
     Application.EnableVisualStyles() 
     Application.Run(New Start()) 
    End Sub 

    Private txtNotes As System.Windows.Forms.TextBox 
    Public Sub New() 
     Me.txtNotes = New System.Windows.Forms.TextBox() 
     Me.txtNotes.Multiline = True 
     Me.Controls.Add(Me.txtNotes) 
    End Sub 
End Class 

Когда я построить эту программу с помощью Visual Studio, он выходит из строя, если я печатаю в текстовом поле (всегда). Если я построю его с помощью vbc.exe Start.vb /target:winexe /main:Start /out:Start.exe, он отлично работает.

Кроме того, я обнаружил, что удаление любой из этих линий останавливает его от падения с помощью Visual Studio:

Application.EnableVisualStyles() 
Me.txtNotes.Multiline = True 

Я уже сделал установку Visual Studio ремонт и используется sfc.exe для проверки поврежденных системных файлов. Я попытался найти существующие решения этой проблемы, но ничего не нашел. Что может привести к тому, что Visual Studio построит сломанный исполняемый файл? Есть ли какие-то настройки, которые сделают это?

Редактировать: Я также запускаю антивирус AVG на данный момент. Я помню, что во время этих сбоев было обновление AVG. Согласно одному из приведенных ниже комментариев, отключение AVG, а затем сканирование исполняемого файла предотвращает его сбой. Это, по-видимому, указывает на то, что проблема связана с AVG.

+0

Продолжающееся обсуждение этой проблемы в MSDN: https://social.msdn.microsoft.com/Forums/en-US/13570be7-49d9-47f1-878d-a3f208356d09/multiline-textboxes Ни одно из обходных решений не подходит для наших поэтому я продолжу изучение решений. –

+0

Я заменил AVG антивирусом Panda на моем компьютере, и моя программа больше не сработала. – camerondm9

+0

Отлично. Я использовал ссылку обратной связи на веб-сайте AVG, чтобы сообщить им о проблеме. Я отчитаю, если/когда я что-нибудь услышу. –

ответ

4

У нас та же проблема с установкой нескольких наших клиентов в Windows 7. Наш продукт - C# с WinFoms и .net 4.0. Ввод текста в текстовом поле mutli-line под WinForms приводит к сбою AccessViolationException. Вы можете вставить текст в поле и удалить его тоже, просто не введите. Однострочные текстовые поля в порядке. Мы также обнаружили, что удаление Application.EnableVisualStyles() устраняет проблему.

Другой способ это исправить без изменения кода, чтобы щелкнуть правой кнопкой мыши на значке программы и изменить параметры совместимости для запуска программы для Windows 7.

+0

Далее мы заметили, что все наши пострадавшие клиенты запускают AVG-антивирус. Отключение AVG в режиме реального времени и ручная проверка вирусов на EXE также вылечили ошибку (не долгосрочное решение). Однако у нас много клиентов с AVG, у которых нет этой проблемы. –

+0

Я могу подтвердить, что я использую антивирус AVG, и что это обходное решение, похоже, работает. Похоже, я могу переключать антивирусные продукты. – camerondm9

+0

От последнего сообщения здесь https://support.avg.com/answers?s=textbox%20multiline#!/feedtype=SINGLE_QUESTION_DETAIL&dc=Windows&criteria=ALLQUESTIONS&id=906b0000000D5rsAAC, похоже, что AVG выпустил исправление для этого, хотя я рад У меня была возможность подтвердить это нашими пострадавшими пользователями –

0

У меня была та же проблема. Выбрал его, сняв флажок Включить визуальные стили XP.

Некоторые фон в случае, если это помогает кому-либо еще. Приложение было создано в VS2010. Перемещено до VS2015RC. Все работало нормально. Проблема возникла после переустановки ОС (Win7). Даже старая версия приложения не будет работать, хотя она продолжала работать и на всех остальных рабочих столах Win7, включая новую установку. Если кто-нибудь знает, почему, было бы интересно.

1

У меня такая же проблема, и я бегу AVG слишком.

В качестве временного решения до того, как AVG предоставит исправление, вы можете добавить файл .exe в список исключений AVG. Я могу подтвердить, что это удаляет AccessViolationException, показанное в Visual Studio.

  1. Открыть AVG, выберите Функции
  2. "Дополнительные настройки ..."
  3. Исключения
  4. "Добавить исключение"
  5. Выберите "Application или Файл"
  6. Выберите исполняемый файл (в моем случае я использовал .../bin/Debug/myexe.exe)
  7. Я проверил «Даже когда файл был изменен или обновлен»
  8. Наконец, я проверил все три варианта внизу: «Resident Shield», «Manual and Scheduled Scan» и «Identity Protection» "

Я не выполнял никаких изменений в отношении визуальных стилей или режима совместимости, как указано в других ответах.

Смежные вопросы