非常小的程序中的访问冲突异常C#

时间:2012-05-03 13:08:30

标签: c# access-violation

我正在制作一个包含textboxes labelsbutton webbrowser以及webbrowser的小程序。代码不超过80行,它包含的是一个按钮单击事件,它为neviage()提供了在文本框中输入的链接,并调用了Application.Run函数,第二个事件是浏览器的文档完成事件。错误如下

enter image description here

我已经google搜索并在stackoverflow上搜索了很多访问冲突,但我无法找到任何符合我目的的东西。在任何特定点都不会发生异常。它是随机出现的,始终位于public Form1() { InitializeComponent(); } private void simpleButton_Go_Click(object sender, EventArgs e) { webBrowser1.Navigate(textEdit_url.Text); webBrowser1.ScriptErrorsSuppressed = true; } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { if (webBrowser1.Url.ToString().Contains("member/login")) { if (webBrowser1.Document.GetElementById("email_address")!=null) { webBrowser1.Document.GetElementById("email_address").SetAttribute("value", textEdit_username.Text); webBrowser1.Document.GetElementById("member_password").SetAttribute("value", textEdit_password.Text); var c = webBrowser1.Document.GetElementsByTagName("button"); foreach (HtmlElement element in c) { if (element.InnerText == "Login") element.InvokeMember("click"); } } } if (webBrowser1.Document.GetElementById("toolbar_login") != null && webBrowser1.Document.GetElementById("toolbar_login").InnerText == "Log In") { webBrowser1.Navigate("www.somesite.com"); } else if (webBrowser1.Url.ToString() == textEdit_url.Text) { var c = webBrowser1.Document.GetElementsByTagName("button"); foreach (HtmlElement element in c) { if (element.InnerText == "Add to this list") { element.InvokeMember("click"); var te = webBrowser1.Document.GetElementsByTagName("textarea"); } } } else webBrowser1.Navigate(textEdit_url.Text); } ,没有任何堆栈跟踪!

最让我困扰的一件事就是错误发生在try块中并且没有被捕获!

这个例外是否有任何解决方案?我尝试去调试 - >例外 - >公共语言运行时异常 - >系统和检查抛出,但它不起作用。

我是一名新手程序员,原谅我的经验不足!

编辑:代码

 at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at app.Program.Main() in C:\Documents and Settings\admin\My Documents\Visual Studio 2010\Projects\app\app\Program.cs:line 18
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

编辑:更新

正如所建议的,我删除了devexpress,创建了一个新的winform项目,将代码复制到那个并且错误仍然存​​在。新项目的堆栈跟踪是

{{1}}

1 个答案:

答案 0 :(得分:0)

可能导致问题的一个原因是DevExpress组件。我有类似的问题 - 解决方案是强制初始化酒吧经理。所以你可以尝试:

  1. 删除DevExpress组件并查看它是否有效。
  2. InitializeComponent方法(在Form1.Designer.cs文件中)中设置断点并逐步执行每一行,其中一行应该会出错。如果您找到一个可以发布该行,我们可能会尝试重现错误或尝试找出解决方法。
  3. 还尝试以管理员身份启动Visual Studio。