1

我有一个 C# 程序,它将有多个需要相互通信、执行命令和来回发送数据的实例。现在,这是使用 WM_COPYDATA 完成的,这很麻烦。我想将它升级到使用 NetNamedPipeBindings 的 WCF 系统。但是,无论我尝试什么设置,我都无法使可重入双工通信正常工作。

这将是一个正常的 WCF 调用:

client calls proxy.foo
   server executes foo
   server finishes foo
client returns from proxy.foo

这就是我想要的:

client calls proxy.foo
    server executes foo
    server calls callback.bar
        client executes bar
        client calls proxy.baz
            server executes baz
            server finishes baz
        client returns from proxy.baz
        client finishes bar
    server returns from callback.bar
    server finishes foo
client returns from proxy.foo

至关重要的是,我希望调用 proxy.foo 的客户端线程与调用 proxy.baz 的线程相同。对于 Windows 消息,这是课程的标准。但无论我尝试什么设置,我都无法通过 WCF 获得这种模式。甚至可能吗?

4

1 回答 1

2

除非您使调用异步并手动处理交错和(可能)编组到正确的线程,否则我看不出这是怎么可能的。毕竟,客户端(线程)正在调用服务器并被阻塞,直到服务器返回响应。因此,由于客户端线程已被阻塞,因此对客户端的回调将使代码死锁。

于 2012-01-28T20:57:21.470 回答