繁体   English   中英

如何在WCF服务操作中等待任务完成

[英]How to wait for a Task to complete in a WCF service operation

抱歉,如果您以前曾提出过此问题的变体,但我一直在努力寻找适合我当前情况的答案。

我正在一个项目中,我被要求通过WCF服务公开基于任务的提供程序的操作。 提供者接口将Task<T>明确定义为每个方法的返回类型,这是一个示例:

public interface IContactProvider
{
    Task<IEnumerable<Contact>> GetAllContacts(); 
}

为了将其公开为WCF服务,我基本上定义了提供程序接口的“同步”版本,以用作服务协定,从而产生如下所示的服务实现:

public class ContactService : IContactService
{
    private IContactProvider contactProvider;

    public IEnumerable<Contact> GetAllContacts()
    {
        return contactProvider.GetAllContacts().Result;
    }
}

我的直觉告诉我,我在这里做错了事,应该“等” Result以其他方式使用。 有一个更好的方法吗?

您正在执行的操作应该可以正常工作( Result将阻塞,直到任务完成为止),但是您正在使用.NET 4.5吗? 如果是这样,您只需声明您的服务操作合同即可直接返回async Task<T> 这样,您的客户端将自动获得通过同步或异步(通过生成的服务客户端)调用它的选项。

这是我发现比MSDN文档更有用的帖子: http : //blog.vuscode.com/malovicn/archive/2012/01/21/what-is-new-in-wcf-in-net-4-5- taskt-和async.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM