【问题标题】:Can the caller ignore async WCF call result?调用者可以忽略异步 WCF 调用结果吗?
【发布时间】:2012-08-24 08:20:28
【问题描述】:

我确定这一定有人问过并回答过,但我找不到...

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

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

在我的 (.NET 3.5) 客户端应用程序中,我想忽略在调用 LogInfo 期间发生的任何故障,并且我不想阻塞,甚至在网络传输上也不想阻塞。
因此,我想我应该在我的客户端中使用其中一种异步模式。但是,我无法弄清楚“基于事件”或“开始-结束”模式的“忽略结果友好”是否有任何区别。在这个意义上有区别吗?
或者您是否总是必须实现已完成的事件或调用End* 以不泄漏资源? (我依稀记得读过 Skeet 或 Lippert 的类似文章)

【问题讨论】:

  • 如果不调用 End 方法,就会引入泄漏。你不需要使用它返回的值,但你需要调用它。
  • 我就是这么想的。我有点希望 WCF 生成的代码能做一些神奇的事情,我猜 :)

标签: c# .net wcf asynchronous


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-04-29
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    相关资源
    最近更新 更多