【发布时间】:2011-03-28 22:59:17
【问题描述】:
我需要下载一个字符串(特别是来自 PHP Web 服务的 JSON 数组结果),作为返回字符串的函数,而不是 DownloadStringAsync。我需要这个,因为我正在编写一个下载字符串的函数,然后将其转换为 JsonArray。
我正在使用 Visual Studio Ultimate 2010,我正在开发 Silverlight 应用程序,我们将不胜感激。
【问题讨论】:
-
当一个同步 API 被故意省略时,为什么要强制 Silverlight 同步。为什么不问更好的问题:“我怎样才能异步执行此操作?”而不是试图将方形钉子砸入圆孔。
-
@spender 因为很多人(比如我)认为使用错综复杂的回调网络和事件处理程序进行编程会变得非常混乱,非常快。然而,尝试将方形钉子塞入圆孔可能同样麻烦,甚至更糟。
-
@spender 想想看,如果你有任何设计提示可以让异步编程更容易/更有条理,我(可能还有 OP)会全神贯注。
-
@Phil 看看我的回答,菲尔。自从我发现了协程后,我不再想在 Silverlight 中处理异步工作流时自欺欺人了。
-
Silverlight 尝试强制执行异步模型,因为主线程上的任何其他类型的活动都会阻塞 UI 活动。这是让用户熟悉使用线程来创建应用程序的权衡。您应该简单地调用此服务异步并在回调中通过测试它是否成功然后将其转换为 JsonArray 来处理结果。就我个人而言,我更倾向于使用 lambda 回调而不是连接事件处理程序,但每个人都需要权衡取舍。
标签: c# silverlight web-services json webclient