.net 4.0 在WP7中,如何知道异步方法何时完成?
当lambda函数完成时,.net 4.0 在WP7中,如何知道异步方法何时完成?,.net-4.0,windows-phone-7.1,.net 4.0,Windows Phone 7.1,当lambda函数完成时,MyMethod应返回string值。我的问题是: 我怎么知道lambda函数在什么时候 请求。BeginGetResponse将完成吗 MyMethod将如何知道它以返回值 要查看lambda何时完成,可以使用如下手动重置事件: public string MyMethod(string param1) { var url = string.Format(UrlMask, HttpUtility.UrlEncode(param1), Log
MyMethod
应返回string
值。我的问题是:
- 我怎么知道lambda函数在什么时候
将完成吗李>请求。BeginGetResponse
将如何知道它以返回值MyMethod
public string MyMethod(string param1)
{
var url = string.Format(UrlMask, HttpUtility.UrlEncode(param1), Login, ApiKey);
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.BeginGetResponse(result =>
{
var requestInternal = (HttpWebRequest)result.AsyncState;
var response = (HttpWebResponse)requestInternal.EndGetResponse(result);
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
var resultXml = XDocument.Load(response.GetResponseStream());
var x = from r in resultXml.Descendants("node")
select r.Element("element").Value;
}
}, request);
return null;
}
public string MyMethod(string param1)
{
const int timeOutInMs = 1000;
using (ManualResetEvent ended = new ManualResetEvent(false))
{
var url = string.Format(UrlMask, HttpUtility.UrlEncode(param1), Login, ApiKey);
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.BeginGetResponse(result =>
{
var requestInternal = (HttpWebRequest) result.AsyncState;
var response = (HttpWebResponse) requestInternal.EndGetResponse(result);
using (
StreamReader streamReader =
new StreamReader(response.GetResponseStream()))
{
var resultXml = XDocument.Load(response.GetResponseStream());
var x = from r in resultXml.Descendants("node")
select r.Element("element").Value;
}
ended.Set();
}, request);
if (!ended.WaitHandle.WaitOne(timeOutInMs))
{
throw new TimeoutException("lambda took too long to complete");
}
}
return null;
}