1

我正在尝试使用 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 Answer 所做的更改

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
4

1 回答 1

2

该类Parallel用于并行但同步地运行事物。

要异步运行某些东西,请使用Task该类。
你想要Task.Factory.StartNew()

于 2012-10-11T19:28:25.547 回答