调用长时间运行的Web服务 - 在延续中获取请求的详细信息

时间:2012-01-30 15:06:31

标签: .net task-parallel-library

说我有类似下面的代码:

Dim serviceTasks As New List(Of Task)()

serviceTasks.Add(Task(Of XmlElement).Factory.FromAsync(AddressOf proxy.BeginLongRunningService, _
                                                                 AddressOf proxy.EndLongRunningService, _
                                                                 serviceInput, _
                                                                 proxy) _
                                    .ContinueWith(Sub(antecedent) HandleServiceReturn(antecedent)))

我的延续:

private sub HandleServiceReturn(antecedant As Task(Of XmlElement))

   'Do stuff with our result here
    dim data = antecedant.result

end sub

我的'serviceInput'对象是传递给长时间运行的Web服务的XML文档。我创建了这些任务的组并以异步方式运行它们一切正常,直到我在Web服务调用中遇到错误。在这种情况下,能够访问在我的继续中发送到服务的“请求”参数将是有用的,因为结果只是一个例外。

我对TPL很新,我想知道是否有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以将serviceInput变量的值传递给您的延续,如下所示:

serviceTasks.Add(Task(Of XmlElement).Factory.FromAsync(AddressOf proxy.BeginLongRunningService, _  
                                                       AddressOf proxy.EndLongRunningService, _  
                                                       serviceInput, _  
                                                       proxy) _  
                             .ContinueWith(Sub(antecedent) HandleServiceReturn(serviceInput, antecedent)))

private sub HandleServiceReturn(input As XmlDocument, antecedant As Task(Of XmlElement))