2012-05-03 3 views
2

일부 프로그램은 textboxes이고 일부는 labels이고 buttonwebbrowser입니다. 코드는 80 줄을 넘지 않으며 포함 된 모든 것은 webbrowser에 텍스트 상자에 입력 된 링크를 제공하고 neviage() 함수가 호출되고 두 번째 이벤트가 브라우저의 문서 완료 이벤트 인 버튼 클릭 이벤트입니다. 내가 봤 및 액세스 위반에 대한 유래에 많이 검색 한아주 작은 프로그램에서 액세스 위반 예외 C#

enter image description here

을 다음하지만 난 내 목적을 위해 아무것도 찾을 수 없습니다로 오류입니다. 예외는 특정 시점에서 발생하지 않습니다. stacktrace없이 임의로 그리고 항상 Application.Run에 나타납니다!

가장 신경 쓰이는 것은 try 블록에서 오류가 발생하고 잡히지 않는다는 것입니다.

그리고이 예외에 대한 해결책이 있습니까? 나는 디버그 -> 예외 -> 공용 언어 런타임 예외 -> 시스템을 시도하고 던진 것을 확인하려고 시도했지만 작동하지 않았습니다.

나는 초보 프로그래머이므로 미숙 한 사람을 용서하십시오!

편집 : 코드

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); 
     } 

편집 : 업데이트

으로, 나는, DevExpress의 제거 새의 WinForm 프로젝트를 만들 것을 제안에 코드 오류를 복사 여전히했다. 새 프로젝트의 스택 추적은

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() 
+0

F11과 디버그 포인트를 사용하면 어떻게됩니까? –

+1

Form1의 생성자를 게시하십시오. – cadrell0

+0

호출 스택 창을 열고 예외가 실제로 * 발생한 위치를 표시하는 스택을 게시하십시오. – kuba

답변

0

입니다. 문제가 발생할 수있는 원인 중 하나는 DevExpress 구성 요소 때문입니다. 나는 비슷한 문제가 있었다 - 해결책은 바 관리자를 초기화하는 힘이었다. 따라서 시도해 볼 수 있습니다 :

  1. DevExpress 구성 요소를 제거하고 작동하는지 확인하십시오.
  2. InitializeComponent 메서드 (Form1.Designer.cs 파일에 있음)에 중단 점을 설정하고 각 줄을 단계별로 처리하십시오. 그 중 하나에서 오류가 발생해야합니다. 하나를 찾으면 그 행을 게시 할 수 있으며 오류를 재현하거나 문제를 해결할 수 있습니다.

또한 관리자 권한으로 Visual Studio를 시작하십시오.

+0

가 제거되었습니다. 여전히 오류가 발생했습니다. 오류의 스택 추적을 업데이트했습니다. – Cancer

+0

디버그 InitializeComponent 메서드를 사용해 보셨습니까? 또한 [이 스레드 답변] (http://social.msdn.microsoft.com/Forums/eu/wpf/thread/9974d41a-4384-40fe-8e83-8d62d1d5fc7f)에서보세요 – Reniuz