C#GetResponseAsync与回调用法

时间:2016-07-28 15:13:56

标签: c# asp.net asynchronous

通过使用HttpWebRequest并使用 async / await 来实现网络API,我感到很困惑。

我需要发送GET(或POST)个请求,并在不阻止用户界面的情况下收到回复。

首先通过BeginGetResponse方法实现,我可以设置回调并解析结果。 但是第二次实现需要通过 async / await 功能来完成,我真的无法理解它应该如何工作。

首次实施:

public class WebRequestGenerator : IRequestGenerator
{
    public IAsyncResult StartRequest(RequestData data) //data is my own class which aggregates some uri and callbacks' actions
    {
        WebRequest request = WebRequest.Create(data.uri);

        // here I create a callback which will parse response and call user's appropriate actions for success and exceptional cases.
        AsyncCallback completed = RequestCompletedCallback(data.successRequestAction, data.errorRequestAction);
        return request.BeginGetResponse(completed, request); //here I can set a callback
    }
}

对于第二次实现,我应该使用

 return request.GetResponseAsync()

我无法控制结果。在这种情况下,我返回Task<WebResponse>,但实际上我希望有可能返回Task<T>,其中T是一个类,响应将被反序列化。

任何帮助?

0 个答案:

没有答案