【问题标题】:Task-Based data service in SilverlightSilverlight 中基于任务的数据服务
【发布时间】:2023-03-24 00:15:02
【问题描述】:

我正在尝试使用等待/异步“模式”(使用 SL5 和 VS11)编写 silverlight 应用程序,但我无法在服务配置中选择“生成基于任务的操作”,这应该是可能的吗(然而)?在网上找不到太多详细信息(特定于 SL)...

【问题讨论】:

  • 我能够重现您的情况:对于 SL 项目,服务参考设置对话框的整个“客户端”部分已禁用。您可能想打开一个 Microsoft Connect 问题,以便在 VS11 发布之前提出它。
  • 谢谢斯蒂芬,所以我不需要为此去精神病院管理自己:)
  • 我为此添加了一个 MS Connect 问题,目前还没有活动:connect.microsoft.com/VisualStudio/feedback/details/722368/…

标签: silverlight wcf


【解决方案1】:

我已经能够在 Silverlight 5 和 Visual Studio 2010 中手动创建基于任务的异步服务代理。
像魅力一样工作。
我个人更喜欢手动编写合同和服务代理,但如果您喜欢使用 Generate Service 参考,您可以查看this post - WCF + Tasks

【讨论】:

  • 这与引入 VS11 的 await/async 功能有什么关系? (或就此而言的异步 CTP?)
  • 据我所知,您可以对任何返回 Task 或 Task 的方法使用 async/await 语法。
【解决方案2】:

我认为 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;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2010-09-26
    • 2021-06-25
    • 2011-01-15
    相关资源
    最近更新 更多