使用Sub()异步行为进行并行调用

时间:2012-10-11 19:26:47

标签: .net parallel-processing invoke

我正在尝试使用System.Threading.Tasks库以100%异步方式启动WCF服务调用。当我在下面的代码示例中调用HandleChange方法时,它似乎仍然等待客户端服务调用完成后再继续通过该行。我想做这样的事情,但不是“举起节目” - 意思是我希望调用它的方法只是在客户端调用完成之前移动到下一行代码。我可能只是错误地接近这一点,所以如果有人能够提供我所做错事的见解,或者我如何能够实现我在​​这里想要的东西,我将不胜感激。

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

1 个答案:

答案 0 :(得分:2)

Parallel类用于并行运行,但是同步运行。

要异步运行某些内容,请使用Task类 你想要Task.Factory.StartNew()