Silverlight 中基于任务的数据服务
Posted
技术标签:
【中文标题】Silverlight 中基于任务的数据服务【英文标题】:Task-Based data service in Silverlight 【发布时间】:2012-02-16 14:16:19 【问题描述】:我正在尝试使用等待/异步“模式”(使用 SL5 和 VS11)编写 silverlight 应用程序,但我无法在服务配置中选择“生成基于任务的操作”,这应该是可能的吗(然而)?在网上找不到太多详细信息(特定于 SL)...
【问题讨论】:
我能够重现您的情况:对于 SL 项目,服务参考设置对话框的整个“客户端”部分已禁用。您可能想打开一个 Microsoft Connect 问题,以便在 VS11 发布之前提出它。 谢谢斯蒂芬,所以我不需要为此去精神病院管理自己:) 我为此添加了一个 MS Connect 问题,目前还没有活动:connect.microsoft.com/VisualStudio/feedback/details/722368/… 【参考方案1】:我已经能够在 Silverlight 5 和 Visual Studio 2010 中手动创建基于任务的异步服务代理。 像魅力一样工作。 我个人更喜欢手动编写合同和服务代理,但如果您喜欢使用 Generate Service 参考,您可以查看this post - WCF + Tasks。
【讨论】:
这与引入 VS11 的 await/async 功能有什么关系? (或就此而言的异步 CTP?) 据我所知,您可以对任何返回 Task 或 Task我认为 Silverlight 不支持它,但你可以自己做,也许可移植类库是另一种解决方法。
public class MyCServiceProxy
public static Task<ObservableCollection<MyC>> GetMyCs()
var tcs = new TaskCompletionSource<ObservableCollection<MyC>>();
var client = new MyCServiceClient();
client.GetMyCsCompleted += (s,e) => ;
client.GetMyCsAsync();
return tcs.Task;
【讨论】:
以上是关于Silverlight 中基于任务的数据服务的主要内容,如果未能解决你的问题,请参考以下文章