0

我有服务器和客户端。
客户端调用服务器上的方法,服务器作为响应必须准备一个字典并发送回客户端。
此操作可能需要一些时间。
它应该是异步的。我阅读说明和示例。
主要是 BeginXXX 和 EndXXX IAsyncResult。但是如果我需要服务器返回对象字典。我该如何实施?

我想在发送回调委托时,我可以发送客户端函数之一的签名作为委托,当服务器完成时,它将使用正确的字典数据调用委托。

4

2 回答 2

1

1) 在 VS(或SLSvcUtil)中添加服务引用会为 Silverlight 项目生成带有事件的方便代理代码。如果需要,您可以使用它为您的“服务/服务器代理”实现回调模式。您可以将此代码与常规 .net 应用程序一起使用,也可以进行一些修改。

2) .Net 项目的 VS 可以使用异步方法生成代理。SvcUtil -

3) 对于真正长时间运行的操作,您可以使用带有回调的 WCF 服务(+ 一些绑定限制)。

于 2013-03-04T19:31:13.000 回答
0

如果我以正确的方式理解你,你会问这个(基于 eLibrary 项目): WCF 服务器端:

 EBooksLibraryEntities ebe = new EBooksLibraryEntities();    
 public List<Book> tabBooks()
    {
        return ebe.Books.ToList();
    }

客户端:

 ServiceReference1.Service1Client sr = new ServiceReference1.Service1Client();
    List<ServiceReference1.Book> llb = new List<ServiceReference1.Book>();
    private void GetBooksByAuthor()
    {
        sr.tabBooksByAuthorCompleted += new EventHandler<ServiceReference1.tabBooksByAuthorCompletedEventArgs>(sr_tabBooksByAuthorCompleted);
        sr.tabBooksByAuthorAsync();
    }
    void sr_tabBooksByAuthorCompleted(object sender, ServiceReference1.tabBooksByAuthorCompletedEventArgs e)
    {
        foreach (var item in e.Result)
        {
            yourList.Add(item);
        }
    }
于 2013-03-27T12:09:36.323 回答