繁体   English   中英

对Web服务的异步调用

[英]Asyncronous call to web service

我正在使用未编写自己的Web服务(因此无法进行编辑)。 我有以下代码:

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()方法。

但是,如何使用这种方法并获得结果呢? 有人可以为我提供一个有关如何使用异步调用的简单示例吗?

谢谢

这是一个例子:

    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代表您处理异步结果的委托或action。

让我知道如果您在将其转换为C#时遇到麻烦,那么我将对其进行更改;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM