调用者可以忽略异步WCF调用结果吗?

时间:2012-08-24 08:20:28

标签: c# .net wcf asynchronous

我确信这一定是被问到并回答的,但我找不到......

我有一个带有此接口的WCF服务:

[ServiceContract(Namespace = WcfNamespace.MyNamespace)]
public interface ILogging
{
    [OperationContract(IsOneWay = true)]
    void LogInfo(string message);
}

在我的(.NET 3.5)客户端应用程序中,我想忽略在调用LogInfo期间发生的任何故障,我不想阻止,甚至不在网络传输上。 因此,我想我应该在我的客户端使用其中一个异步模式。但是,我无法弄清楚“基于事件的”或“开始结束”模式的“忽略结果友好”是否存在任何差异。这种意义上有区别吗? 或者你总是要实现一个已完成的事件或者无论如何都要调用End*以免泄漏资源? (我模糊地回忆起Skeet或Lippert读过的东西)

1 个答案:

答案 0 :(得分:2)

如果您使用基于事件的异步模式,则不需要实施任何*Completed事件,因此这是一个选项。如果你使用开始/结束模式,你应该调用End*操作,如果你想真的忽略任何东西,请将它包装在try / empty catch中。