2012-11-06 1 views
1

이 응용 프로그램의 새 버전에서 서버 체크 포인트를 만들고 있습니다. 내 응용 프로그램이 내 기본 양식을 열려고하면이 오류 이 발생합니다.서버 체크 포인트가 전달 된 후 양식 생성 오류가 발생했습니다.

양식을 만드는 동안 오류가 발생했습니다. 세부 사항은 Exception.InnerException을 참조하십시오. 오류 : ActiveX 컨트롤 현재 스레드가 단일 스레드 아파트에 없기 때문에 '6bf52a52-394a-11d3-b153-00c04f79faa6'을 인스턴스화 할 수 없습니다.

이 형식이 스플래시 화면으로 사용된다는 점을 제외하고는 일반적인 형태와 비슷하기 때문에이 내용이 확실하지 않습니다. 시작 화면을 제거하면 모든 플러그인과 모듈에서 양식이 정상적으로 열립니다. 다음은 코드의 일부는 내가

Public Class example_form 
    Public Function servercheck() As Boolean 
     Dim objUrl As New System.Uri("http://google.com") 
     Dim objWebReq As System.Net.WebRequest 
     objWebReq = System.Net.WebRequest.Create(objUrl) 
     Dim objresp As System.Net.WebResponse 

     Try 
      objresp = objWebReq.GetResponse 
      objresp.Close() 
      objresp = Nothing 
      Return True 

     Catch ex As Exception 
      objresp = Nothing 
      objWebReq = Nothing 
      Return False 
     End Try 
    End Function 


    Private Sub Form4_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     BackgroundWorker1.RunWorkerAsync() 
     Control.CheckForIllegalCrossThreadCalls = False 

    End Sub 

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 
     If servercheck() = True Then 
      Form1.Show() 
      Me.Hide() 
      BackgroundWorker1.CancelAsync() 
     Else : PictureBox1.Image = My.Resources._12383u9 
      MsgBox("some text here", MsgBoxStyle.Critical) 
      End 
     End If 
    End Sub 
End Class 

지금 당신이 코드를 사용합니다. 양식을 열려고 할 때 오류가 백그라운드 작업자에게 있습니다. (코드의 끝 부분에서)

답변

0

나는 오류를 발견했다. 이 오류가있는 사용자는 작업 모드에서 backgroundworker에 form.show() 명령을 추가하지 마십시오. backgroundworker가 끝날 때 양식이로드되어야합니다. 올바른 코드는 다음과 같습니다.

Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork 
       If servercheck() = True Then 
      Me.Hide() 
      BackgroundWorker1.CancelAsync() 
     Else : PictureBox1.Image = My.Resources._12383u9 
      MsgBox("Some text here", MsgBoxStyle.Critical) 
      End 
     End If 
    End Sub 

    Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted 
     Form1.Show() 
    End Sub 
관련 문제