大约一个星期前,每当我输入某个文本框时,我正在处理的程序开始崩溃,并出现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 :(得分:4)
我们的一些客户遇到同样的问题&#39;在Windows 7上安装。我们的产品是带有WinFoms和.net 4.0的C#。在WinForms下键入多行文本框会导致AccessViolationException崩溃。您可以在框中粘贴文本并将其删除,只是不要键入。单行文本框很好。我们还发现删除Application.EnableVisualStyles()可以解决问题。
在没有代码更改的情况下修复它的另一种方法是右键单击程序图标并更改兼容性设置以运行Windows 7程序。
答案 1 :(得分:1)
我遇到了同样的问题,我也在运行AVG。
作为AVG提供修复之前的临时解决方案,您可以将.exe文件添加到AVG的例外列表中。我可以确认这会删除Visual Studio中显示的AccessViolationException。
我没有对视觉样式或兼容性模式进行任何更改,如其他答案中所述。
答案 2 :(得分:0)
我遇到了同样的问题。通过取消选中Enable XP视觉样式解决了这个问题。
有些背景以防万一。应用程序最初是在VS2010中创建的。搬到了VS2015RC。一切都很好。重新安装操作系统(Win7)后出现问题。即使旧版本的应用程序也无法运行,但它确实可以继续在所有其他Win7桌面上运行,包括新安装。如果有人知道为什么,那将会很有趣。