【问题标题】:Asyncronous call to web service对 Web 服务的异步调用
【发布时间】:2013-02-18 10:38:11
【问题描述】:

我正在使用不是我自己编写的网络服务(因此无法编辑)。我有这个代码:

public void GetData()
{
    try
    {
        TelemeterServiceClient client = new TelemeterServiceClient();
        RetrieveUsageRequestType request = new RetrieveUsageRequestType { UserId = Username, Password = Password };
        RetrieveUsageResponseType response = client.retrieveUsage(request);
        Result = response.Item;

        Callback(null);
    }
    catch (Exception e)
    {
       Result = null;
       Callback(e);
    }
}

这在 WPF 项目中运行良好。但是,我现在正在处理一个使用 Silverlight 的 Windows Phone 项目。在这个项目中,找不到retrieveUsage() 方法。

显然 Silverlight 仅支持对 Web 服务的异步调用。事实上,存在一个 retrieveUsageAsync() 方法。

但是我如何使用这种方法并返回结果呢?谁能给我一个如何使用异步调用的简单示例?

谢谢

【问题讨论】:

    标签: wcf web-services silverlight windows-phone-7


    【解决方案1】:

    这是一个例子:

        Dim proxy = new TelemeterServiceClient()
    
        AddHandler proxy.retrieveUsageCompleted, Sub(o, e)
                                                              action(o, e)
                                                          End Sub
    
        Using New OperationContextScope(proxy.InnerChannel)
            Dim request = New retrieveUsageRequest
            proxy.retrieveUsageAsync(request)
        End Using
    

    认为它是这样翻译成 c# 的:

        var proxy = new TelemeterServiceClient();
    
        proxy.retrieveUsageCompleted += MethodYouImplementWhenAsyncIsComplete;
        //or proxy.retrieveUsageCompleted += (s, e) => { do something };
    
        using (new OperationContextScope(proxy.InnerChannel))
        {
            var request = New retrieveUsageRequest();
            proxy.retrieveUsageAsync(request);
        }
    

    action 一致,action 代表您处理异步结果的委托或操作

    如果您在将其翻译成 c# 时遇到问题,请告诉我,然后我会更改它;)

    【讨论】:

    • 谢谢。如果你能把它翻译成C#,那就太好了,因为我不完全理解这段代码..
    • @Bv202:我想我把它弄到了 C#,可能有一点语法错误,但应该很接近
    • @Bv202: 让我知道 c# 语法是否正常,所以如果有必要我可以调整我的答案;) 自从我编写了一些 c# 以来已经有一段时间了
    猜你喜欢
    • 2023-03-15
    • 2011-09-03
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多