c# - WCF:回调不是异步的

标签 c# visual-studio wcf

我正在尝试根据 WCF 提供的回调基础结构对客户端服务器进行编程,但它不是异步工作的。

我的客户端连接到调用登录方法的服务器,我通过以下方式保存客户端回调 channel

MyCallback callback = 
      OperationContext.Current.GetCallbackChannel<MyNamespace.MyCallback>()

之后服务器做一些处理并使用回调对象与客户端通信。

所有这些都有效,问题在于即使我在 OperationContract 中将方法设置为 IsOneWay=true,服务器仍然挂起给客户的电话。

我已经通过在 Visual Studio 中启动服务器进行调试、分离它、启动客户端、调用上述登录方法、在客户端实现的回调方法中放置一个断点,并使服务器向客户端发送响应。服务器停止做它应该做的事情,等待客户端的响应。

感谢任何帮助。

最佳答案

诀窍是从服务器异步调用回调。看看这个:

    [OperationContract(IsOneWay = true, AsyncPattern = true)]
    IAsyncResult BeginOnMessageReceived(LiveDataMessage message, AsyncCallback acb, object state);
    void EndOnMessageReceived(IAsyncResult iar);

关于c# - WCF:回调不是异步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/955236/

相关文章:

c# - 使用 Parallel.ForEach() 进行长时间运行的进程

c# - 设置具有不同输入的测试方法

c# - C# 中的静态类列表

visual-studio - 如何更改 Visual Studio 2008 中调试的默认浏览器?

visual-studio - 如何暂时禁用 LocalDB 数据库以进行连接失败测试?

WCF,统一 : Teardown disposable instances

c# - 匿名类的返回类型是什么

c++ - 是否有 SFINAE 测试来检查枚举是否未签名?

silverlight - #if SILVERLIGHT 和 #else 阻止 WCF 中的颜色变化

WCF-大数据