我将一些代码从完整的.NET框架移植到WP7版本,并且遇到了同步和异步调用的问题。在Silverlight WP7中伪造同步调用
string response;
string requestString = GenerateReqString();
HttpWebRequest req = (HttpWebRequest) WebRequest.Create("endpoint");
req.Method = "POST";
req.ContentType = "text/xml";
req.ContentLength = requestString.Length;
StreamWriter sw = new StreamWriter (req.GetRequestStream(), System.Text.Encoding.ASCII);
sw.Write(requestString);
sw.Close();
StreamReader sr = new StreamReader(req.GetResponse().GetResponseStream());
response = sr.ReadToEnd();
sr.Close();
然后将响应字符串解析为方法返回的对象列表。
我遇到的问题是没有办法在Silverlight/WP7中同步进行调用。如果我使用回调函数,我将得到不同函数的响应,并且不能从原始函数返回它。有没有办法让这个调用同步或者从CallBack函数返回到启动异步调用的方法?
可以说ProcessWebResponseResult()从字符串中创建一个对象,并调用DoSomethingAsync()需要返回该对象的函数。那可能吗? – CACuzcatlan 2010-08-17 17:05:49
这是错过了重点。调用DoSomethingAsync的方法将函数传递给DoSomethingAsync。传递的函数是“如何处理这个函数的结果”。随着您的需要更多,您可以为呼叫链添加额外的继续功能。 – 2010-08-17 17:38:01
这是你如何看待一个正常运行的程序:'A(); B(); C();'。然而,当你使用'延续传球风格'执行时,你告诉每个功能完成后该怎么做。而不是“我从这个函数中得到我的结果”,而是通过委托人说“我告诉这个函数如何处理它的结果”。 – 2010-08-17 17:41:42