2013-08-14 2 views
0

My Problem은 다음과 같습니다vb.net 문제() 오류 : InvalidOperationException이

내가 더 빨리 (또는 적어도 내 메인 스레드를 차단하지) 기능 "CreateFolder를"을 만들고 싶어, 내 스레드에 새 콜백을 추가하여 . 결과는 is that입니다.

주 함수를 STAThread()로 표시했는데 예외로 인해 내 주 함수에 STAThread()가 표시됩니다.

나는 어떤 조언도 열려 있습니다!

답변

1

잘못된 방법으로 STAThread 특성을 배치했습니다. 실행중인 메서드가 아니라 양식이 시작된 메서드 여야합니다.

대부분의 경우 신청서는 Sub Main이며 STAThread 속성으로 장식해야합니다. MSDN의 예 :

Public Class MyForm 
    Inherits Form 

    Public Sub New() 
     Me.Text = "Hello World!" 
    End Sub 'New 

    <STAThread()> _ 
    Public Shared Sub Main() 
     Dim aform As New MyForm() 
     Application.Run(aform) 
    End Sub 

End Class 
+0

답장을 보내 주셔서 감사합니다.하지만 메인 서브가 없습니다. 나는 CreateFolder 함수가 들어있는 ftp 클래스를 가져 오는 Form이 있습니다. stathread()를 사용하여 ftp.createFolder() 함수를 호출하는 내 양식에 함수를 표시했으나 작동하지 않습니다. 또한 폼로드 핸들러에 동일한 결과를 표시하여이를 시도했습니다. – MaBi

+0

몇 가지 조치를 취하고 "ftp 메소드로 인해 차단 된 양식 스레드를 피하는 방법"을 묻습니다. 내가 ThreadPool을 사용하는 순간에 누군가가 더 나은 solutin을 알고 있을까요? – MaBi

+0

@MaBi UI가 막히는 것을 막기 위해 백그라운드 스레드에서 긴 작업을 수행하는 방법을 찾고있는 것처럼 보입니다. winforms 응용 프로그램을 빌드 할 때이 작업을 단순화하는 BackgroundWorker 구성 요소를 살펴 봐야합니다. Google의 BackgroundWorker 검색 : http://www.google.com/search?q=backgroundworker%20vb.net – bernhof