我有服务器和客户端 客户端在服务器上调用一个方法,响应的服务器必须准备一个Dictionary并发送回客户端 此操作可能需要一些时间 它应该是异步的。我阅读说明和例子 主要是BeginXXX和EndXXX IAsyncResult。但是,如果我需要服务器返回对象的字典。我该如何实现?
我认为在发送回调委托时,我可以将其中一个客户端函数的签名作为委托发送,当服务器完成时,它将使用正确的字典数据调用委托。
答案 0 :(得分:1)
1)在VS(或SLSvcUtil)中添加服务引用可生成包含Silverlight项目事件的便捷代理代码。如果需要,您可以使用它来为您的“服务/服务器代理”实现回调模式。您可以将此代码与常规.net应用程序一起使用以及进行一些修改。
2)VS for .Net项目可以使用异步方法生成代理。 SvcUtil - too。
3)对于实际长时间运行的操作,您可以使用callbacks的WCF服务(+一些绑定限制)。
答案 1 :(得分:0)
如果我以正确的方式理解你,你会问这个问题(根据电子图书馆项目): 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);
}
}