【问题标题】:Silverlight - Closing a ServiceSilverlight - 关闭服务
【发布时间】:2010-03-23 14:13:18
【问题描述】:

我正在开发一个使用 WCF 服务的 Silverlight 应用程序。在我的浏览器中加载服务元数据时,我注意到它提供了以下代码:

class Test
{
    static void Main()
    {
        myServiceClient client = new myServiceClient();

        // Use the 'client' variable to call operations on the service.

        // Always close the client.
        client.Close();
    }
}

最后一行显示“始终关闭客户端”。我的问题是,您应该何时关闭 Silverlight 应用程序中的客户端?您应该在调用“[MyServiceOperation]Async”之后关闭它,还是应该在“[MyServiceOperation]Completed”事件处理程序中关闭它?

谢谢,

【问题讨论】:

    标签: wcf silverlight


    【解决方案1】:

    Close 在异步场景中使用时会阻塞。

    如果你不希望你的调用代码阻塞,还有一个代码的 BeginClose/EndClose 异步变体,但是从我可以看到如果你调用 .Close 它会等到你的未完成调用解决在.Close 返回之前。

    另请注意,在 Completed 处理程序中调用它可能会导致对同一客户端对象的多次异步调用出现问题...我建议在调用代码中使用 .Close.BeginClose 进行此操作

    更新:From the documentation(虽然有些埋没)

    此方法会导致 ICommunicationObject 优雅地 从 Opened 状态转换到 关闭状态。关闭方法 允许任何未完成的工作 在返回之前完成。 (为了 例如,完成发送任何缓冲的 消息。)

    ...

    达到关闭状态后关闭返回。

    【讨论】:

      猜你喜欢
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多