Silverlight WCF仅代理异步?

And*_*nea 8 silverlight wcf proxy asynchronous call

为什么Silerlight生成的WCF代理类仅提供异步调用?

有些情况下我不需要异步模式(例如在BackgroundWorker中)

编辑:有时我需要处理两个WCF调用的结果.如果我可以等待(应用程序的业务允许)两个调用结束然后处理它会更简单..但是没有....异步!:P

Mar*_*ell 7

据我了解,这里的目的是让人们很难做错事(从UI同步.).如果您正在使用WCF类,那么您可能不得不忍受它.

  • +1阻止Silverlight开发人员在脚下射击自己太糟糕了:-) (2认同)
  • Silverlight只允许您在UI线程上进行网络调用(不确定这也可能是浏览器限制).因此同步IO会锁定浏览器,这是件坏事. (2认同)

ale*_*dej 6

实际上有一个技术上的原因,你不能做同步调用,至少从'主'浏览器线程,这是浏览器调用同一线程上的所有插件API调用,所以如果SL要阻止该线程等待网络回调,网络回调无法通过,应用程序将死锁.也就是说,如果从不同的线程启动,同步API将正常工作 - 即,如果应用程序首先执行QueueUserWorkItem以脱离浏览器线程 - 但我们认为提供同步选项并仅使用它会令人困惑有时候工作.