2012-11-18 3 views
-1

여기 여기 내 코드스레드 안전하지 않은 호출입니까?

Public th As New Thread(New ThreadStart(AddressOf StartFirstPrint)) 
Public th4 As New Thread(New ThreadStart(AddressOf sendFirstEmail)) 

되는 StartFirstPrint의 코드와 sendFirstEmail

Public Sub StartFirstPrint() 
    Do While thCont 
    Try 
     Dim frm As New frmPrint() 
     'frm.MdiParent = Me 
     frm.StartPrinting() 
    Catch ex As Exception 
    End Try 
    Loop 
End Sub 

Public Sub sendFirstEmail() 
    Do While thCont 
    Try 
     Dim frmSNDEmail As New frmEmail 
     frmSNDEmail.SendEmails() 
    Catch ex As Exception 
    End Try 
    Loop 
End Sub 

thCont 그 스레드를 쇼핑 할 때 지정하는 공공 부울 변수입니다.

StartPrinting의 컨트롤과 frmEmail의 컨트롤을 모두 SendEmails에 액세스하면 스레드가 안전하지 않습니까? StartPrintingfrmPrint의 공개 하위이며 SendEmails 당신이 때문에 스레드가에서 생성 된 스레드가없는에서 컨트롤에 액세스하려고의 예외를 얻을 것이기 때문에 당신은 컨트롤에 액세스 할 수 없습니다 frmEmail

답변

0

의 공개 서브입니다. 메서드가 Form 내부에 있다는 차이점이 없습니다. 다른 스레드에서 여전히 호출됩니다.

관련 문제