我有一個多線程客戶端用於處理並行請求數的WCF。不知怎的,它開始共享兩個不同請求/線程的數據;我曾試圖改變InstanceContextMode
和ConcurrencyMode
如下:WCF併發多線程客戶端
- 默認InstanceContextMode = PerSession ConcurrencyMode =單
- InstanceContextMode = PerCall ConcurrencyMode =單
- InstanceContextMode = PerCall ConcurrencyMode =多
但到目前爲止沒有運氣。沒有可能導致此併發問題的共享變量和函數。根據MS文檔PerCall
爲每個單個調用創建實例,並且當實例擁有自己的專用內存堆棧時如何共享數據沒有任何意義。
工作流程: 有三個主要組件WCF,.Net Assembly 1和.Net Assembly 2.有一個名爲WCF的「Process」函數,該函數接受一個字符串參數,並根據通過完成的處理返回結構化對象WCF。 WCF中沒有實例變量;功能中的所有內容。該函數對字符串做了很少的處理,並將其轉換爲結構化對象,然後將其傳遞給Assembly 1的函數做一些處理,然後使用反射的invoke方法將它傳遞給Assembly 2的函數。這是以不同方式混合兩個不同併發呼叫的最終結果的整個過程。
如果有人能夠幫助解決這個問題,我會非常感激。
我們需要看到更多的代碼。沒有共享變量時如何共享數據? – Laurijssen
在這裏發佈整個代碼是不可能的,但我可以給你一個關於代碼工作流程以及它如何工作的想法。 –