我认为这是新手常见且典型的问题,但我仍然不完全理解给定的解决方案。我正在编写一个 Windows Phone 7 应用程序,我想执行几个HttpWebRequest
提交 POST 数据并设置一些标题的地方。响应应该被反序列化,然后由逻辑和/或 UI 层处理。
是的,Silverlight 应用程序以异步方式进行 Web 通信。我明白了。它工作正常。
但是:我想将通信处理与 UI 分离。xaml.cs 代码。我需要进行通信,HttpWebRequest
因为我需要修改标题等。
我想要做的是以下内容:
- 单击一个按钮。提供登录名/用户名来假设我的通信层。例如:
LoginRequest(string username, string pwd)
- 通讯。层会异步执行请求并获取应答,即调用回调
LoginResponseCallback(IAsyncResult res)
- 好的,现在我可以处理响应,将检索到的 JSON 字符串反序列化为对象
- 该对象应交回 UI 以更新数据。我知道我应该使用该
Dispatcher.BeginInvoke
方法,因为回调未在 UI 线程上运行。
但我仍然不知道如何将对象从通信层传递到 UI。我认为解决方案非常简单,例如将委托从方法传递btnLogin_onClick(object sender, RoutedEventArgs e)
给LoginRequest
方法。或者也许我需要使用 lambdas?
我的通信层中有一个SendBasicRequest
方法,它设置适当的标头(例如 ClientOS、LoginKey、VersionBuild 等)。我想从多个页面调用此方法,因此我希望它在通信层中解耦。
提前致谢