private string GetText()
{
string resultString = string.Empty;
HttpWebRequest request = HttpWebRequest.CreateHttp("http://www.baidu.com");
request.Method = "GET";
request.BeginGetResponse((IAsyncResult result) =>
{
HttpWebRequest webRequest = result.AsyncState as HttpWebRequest;
HttpWebResponse webResponse = (HttpWebResponse)webRequest.EndGetResponse(result);
Stream streamResult = webResponse.GetResponseStream();
StreamReader reader = new StreamReader(streamResult);
//获取的返回值
resultString = reader.ReadToEnd();
streamResult.Close();
reader.Close();
}, request);
return resultString;
}
怎么把resultString返回给调用函数?
目前我找到了解决该问题的方案:
private string gethttp()
{
string res = "";
Boolean isfinish = false;
WebRequest request = HttpWebRequest.Create("http://www.baidu.com");
request.BeginGetResponse((IAsyncResult result) =>
{
HttpWebRequest webrequest = (HttpWebRequest)(result.AsyncState);
WebResponse response = request.EndGetResponse(result) as HttpWebResponse;
if (response != null)
{
Stream responseStream = response.GetResponseStream();
using (StreamReader streamReader = new StreamReader(responseStream))
{
res = streamReader.ReadToEnd();
}
}
isfinish = true;
}, request);
//等待异步调用完成
while (isfinish != true) { ;}
return res;
}
public async Task<string> GetStr()
{
var task = Task<string>.Factory.StartNew(() => gethttp());
await task;
return task.Result;
}
//下面就可以直接调用了
string str = await GetStr();
异步调用没法将返回值直接返回给调用函数,只有通过另外的回调函数传递结果