2013-04-28 4 views
-1

내 프로젝트 중 하나에서 '작은'문제가 있습니다. 나는 그렇게 그들가 디스크에 기록하지 않으비동기 적으로 어셈블리 호출

Byte() 

에 저장이 어셈블리를 호출 할 수있다, 나는

 Sub Main()     
       Dim trd As New System.Threading.Thread(AddressOf LodFile1) 
       trd.IsBackground = True 
       trd.Start() 
       Dim resourceManager As New Resources.ResourceManager("Files", System.Reflection.Assembly.GetExecutingAssembly) 
       Dim [Bin2] As Byte() = DirectCast(resourceManager.GetObject("File2"), Byte()) 
       resourceManager.ReleaseAllResources() 
       Dim a2 = System.Reflection.Assembly.Load([Bin2]) 
       Dim m2 As System.Reflection.MethodInfo = a2.EntryPoint 
       Dim o2 As Object = a2.CreateInstance(m2.Name) 
       m2.Invoke(o2, New Object() {New String() {"1"}}) 
     End Sub 
     Sub LodFile1() 
       Dim resourceManager As New Resources.ResourceManager("Files", System.Reflection.Assembly.GetExecutingAssembly) 
       Dim [Bin1] As Byte() = DirectCast(resourceManager.GetObject("File1"), Byte()) 
       resourceManager.ReleaseAllResources() 
       Dim a1 = System.Reflection.Assembly.Load([Bin1]) 
       Dim m1 As System.Reflection.MethodInfo = a1.EntryPoint 
       Dim o1 As Object = a1.CreateInstance(m1.Name) 
       m1.Invoke(o1, New Object() {New String() {"1"}}) 
     End Sub 

예, 두 어셈블리가 잘 실행 할 둘 다 나타나지만 하나를 닫으면 세 개의 앱이 닫힙니다 (이 앱과 byte()에서로드 된 앱).

그래서 나는 그들을 따로 달리게하는 방법을 묻습니다.

+1

이 질문은 거의 의미가 없습니다 제거합니다. 그렇지 않으면 스레드가 작업을 완료 할 수 있다는 보장이 거의 없습니다. Main() 메서드가 완료되면 프로그램이 종료됩니다. IsBackground 속성을 True로 설정 한 이후 스레드가 수행중인 작업과 관계없이 CLR이 중단하도록 허용합니다. –

+0

내 오류에 대해 알았습니다. 정말 고마워요! – Devintelo

답변

0

백그라운드 스레드가 실행 중일 때 백그라운드 스레드가 중단됩니다.

시도 : trd.IsBackground = False

또는 더 나은 : 그냥 당신이 "가까운"조립 라인 :

+0

오, 고마워요! 당신은 정말로 나를 도왔습니다. 다시 감사드립니다! – Devintelo

관련 문제