如何在C#(.NET4.5)中为HttpClient.GetAsync(URI)创建回调?

如何在C#(.NET4.5)中为HttpClient.GetAsync(URI)创建回调?,c#,asynchronous,.net-4.5,dotnet-httpclient,C#,Asynchronous,.net 4.5,Dotnet Httpclient,我想创建一个简单的、异步的谷歌搜索请求 根据Google的说法,实现这一点的最简单方法是在简单的curl请求中使用JSON API curl -e http://www.my-ajax-site.com \ 'https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton' 我想提取前5页的结果,并将每个结果的URL添加到一个数组中。我发现在HttpClient.GetAsync上很难找到任何解释得

我想创建一个简单的、异步的谷歌搜索请求

根据Google的说法,实现这一点的最简单方法是在简单的curl请求中使用JSON API

curl -e http://www.my-ajax-site.com \ 'https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton'
我想提取前5页的结果,并将每个结果的URL添加到一个数组中。我发现在HttpClient.GetAsync上很难找到任何解释得很好的教程。 我没有比这更进一步的了:

public String[] search(String term = "")
{
    var rq = new HttpClient();
    var uri = new Uri("https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=site:" + term);
    rq.GetAsync(uri);
}

我想这应该会启动一个任务,这样我就不会阻塞主线程,但是当请求完成时如何注册回调方法呢?

因为GetAsync是一个可以执行的任务

     rq.GetAsync(uri).ContinueWith((requestTask) => SomeMethod(requestTask););

只需执行
rq.GetAsync(uri.Result
即可等待它。@leppie我不想等待它,我还将使用另一个API执行此操作,其中可能运行10-15个线程。@TimeSheep您的意思是什么?您不必等待而是等待。阅读
async/await
关键字。是的,我意识到这是一个误解。。。我要试试这个,一旦我有时间完成它,我会选择适合我的答案:)还有一个
,这会导致语法错误,应该是以下代码:rq.GetAsync(uri).ContinueWith((requestTask)=>somethod(requestTask));异步任务完成后是否会发生这种情况?
HttpResponseMessage response = await rq.GetAsync(uri);

//put here your continuation logic.