1
我有一個C#程序,它將有多個實例需要相互通信,執行命令並來回發送數據。現在,這是使用WM_COPYDATA來完成的,這非常麻煩。我想使用NetNamedPipeBindings將其升級到WCF系統。但是,無論我嘗試什麼設置,我都無法獲得可重入雙工通信的工作。與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獲取此模式。它甚至有可能嗎?
感嘆......我想我會堅持使用COPYDATA。我很驚訝WCF不支持這一點。 – 2012-01-29 19:21:54
我對此做了一些測試,雖然上面的內容有點正確,但並不完整。 :S如果設置ConcurrencyMode = ConcurrencyMode.Reentrant並且clint線程具有同步上下文(就像在WinForm中或自己創建一個),回調將自動結合到原始線程。它還需要服務器調用來實現異步模式,因爲(如上所述)來自客戶端的原始調用需要被異步化。 我做了一個「小」測試項目,你可以看看: [link](http://www.noer.it/upload/Test_WcfReentrant.zip) – Reonekot 2012-02-01 09:00:26