2012-10-11 3 views
1

System.Threading.Tasks 라이브러리를 사용하여 100 % 비동기 방식으로 WCF 서비스 호출을 시작하려고합니다. 아래 코드 예제에서 HandleChange 메서드를 호출하면 클라이언트 서비스 호출이 완료 될 때까지 기다린 후 해당 줄을 지나가는 것으로 보입니다. 이런 식으로하고 싶습니다만, "쇼를 열지 마십시오"- 클라이언트 콜이 완료되기 전에 이것을 호출하여 다음 코드 행으로 넘어가도록하는 메소드를 원합니다. 나는 잘못 접근하고 있을지도 모르므로, 내가 잘못하고있는 일에 대해 누군가가 통찰력을 제공 할 수 있다면, 또는 내가 여기있는 일을 어떻게 성취 할 수 있는지, 크게 고맙게 생각한다.Sub() 비동기 동작을 사용하는 병렬 호출

Imports System.Threading.Tasks 

Public Class ChangeWrapper 

     Public Shared Sub HandleChange(ByVal orgEntity As MainObjectBase, ByVal newEntity As MainObjectBase) 

      Parallel.Invoke(Sub() 
           Using client As New EventQueueService.EventQueueClient 

            client.QueueDecision(orgEntity, newEntity) 

           End Using 
          End Sub) 

     End Sub 

    End Class 

편집 : 나는 SLaks에 따라 변경된 것을 반영하기는 Parallel 클래스는하지만, 동 기적, 병렬로 일을 실행하는 데 사용

Imports System.Threading.Tasks 

Public Class ChangeWrapper 

     Public Shared Sub HandleChange(ByVal orgEntity As MainObjectBase, ByVal newEntity As MainObjectBase) 

      Task.Factory.StartNew(Sub() 
             Using client As New EventQueueService.EventQueueClient 

              client.QueueDecision(orgEntity, newEntity) 

             End Using 
            End Sub) 

     End Sub 

    End Class 

답변

2

대답.

무언가를 비동기 적으로 실행하려면 Task 클래스를 사용하십시오.
당신은 Task.Factory.StartNew()을 원합니다.

+0

고맙습니다. 이것은 완벽하게 작동합니다. – wakurth