我正在尝试根据 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/