我在Silverlight应用程序中添加了ServiceReference.我把它叫做WcfServiceReference.我可以编写以下代码
using ( var client = new WcfServiceReference.WcfDataServiceClient( ) )
{
client.GetSpendDataTotalAsync( Guid.NewGuid( ) );
}
Run Code Online (Sandbox Code Playgroud)
我以为我应该能够引用client.GetSpendDataTotal(不是Async),但它不可用.但是,它在应用程序中 - 我可以在我的服务中找到它...可能是显而易见的事情?
Silverlight仅允许您使用异步方法来使用WCF服务.一般的想法是,对外部服务的同步调用会占用UI线程,并使您的应用程序无响应,直到它们返回为止.请查看此问题和此博客文章,了解有关Silverlight的更多讨论以及为何您被引导使用异步服务调用.引用博客文章,"插件架构的唯一目的是允许异步请求,以致插件无法锁定浏览器".
Eric Lippert 在关于即将发布的async-await模式的MSDN杂志文章中对后续工作问题进行了很好的解释/讨论.绝对值得一读.
这里要记住的主要事情是,无论在后台可能发生多少有用的工作,如果UI没有响应,应用程序就用户而言什么都不做.在Silverlight中使用异步WCF服务调用允许您在等待结果时对UI执行其他操作,而不是让用户想知道为什么他们无法执行任何操作.
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |