2012-10-11 58 views
1

我試圖用100%異步方式使用System.Threading.Tasks庫發起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回答

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

Parallel類用於並行運行的東西,但同步。

要異步運行某些東西,請使用Task類。
你想要Task.Factory.StartNew()

+0

謝謝先生。這工作完美。 – wakurth