引用dll的Windows Phone应用程序(另一个类库项目)。在dll中有一个异步webrequest来请求服务器并解析响应。
单击WinPhone应用程序主页面中的按钮事件调用引用的dll的异步方法。回调方法在接收和解析响应时引发事件。现在当事件提升时,我将解析对象直到HTTP通信层。简单地说,当HTTPCommunication模块完成其工作时,如何在UI中显示带有此结果的消息框。
public class HTTPRequester
{
public delegate void ResponseReceievedAndParsedDelegate(HTTPRequester eventRaiser, object result);
public event ResponseReceievedAndParsedDelegate ResponseReceivedAndParsed;
public void GetUserInformation(string userid)
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Credentials = new NetworkCredential("uid", "pwd");
request.Method = "GET";
request.Accept = "application/json";
object data = new object();
RequestState state = new RequestState(request, data);
IAsyncResult asr = request.BeginGetResponse(new AsyncCallback(RequesterCallback), state);
}
void RequesterCallback(IAsyncResult result)
{
RequestState state = (RequestState)result.AsyncState;
WebRequest request = (WebRequest)state.Request;
HttpWebResponse response =(HttpWebResponse)request.EndGetResponse(result);
Stream s = response.GetResponseStream();
StreamReader readStream = new StreamReader(s);
string dataString = readStream.ReadToEnd();
response.Close();
s.Close();
readStream.Close();
HTTPResponseParser grp = new HTTPResponseParser();
UserInfo ui = grp.ParseUserInformation(dataString );
state.Response = ui;
if (ResponseReceivedAndParsed != null)
{
ResponseReceivedAndParsed(this, ui);
}
}
}
(asynchronous)
MainUI ------> HTTCommunicator --------->服务器
MainUI HTTPCommunicator< --------服务器
我的问题是如何使缺少的链接将HTTPCommunicator的响应传递回主UI。
希望我没有混淆你们。 任何人都可以指向一些代码示例,如果可以使用Dispatcher完成。答案 0 :(得分:0)
在UI cerate方法中:
private void HandleMessage(HTTPRequester eventRaiser, object result)
{
UserInfo ui = (UserInfo)result;
//show message
}
创建HttpRequester附加到其事件后:
HttpRequester xxx = new ...
xxx.ResponseReceivedAndParsed += new ResponseReceievedAndParsedDelegate(HandleMessage);