我看了2 C#應用程序以及它們的優缺點之間關於IPC許多不同的事情,但不覺得我已經達到了一個滿意的答覆卻爲我的使用情況。推薦的分享C#之間的對象的方式處理
我有一個已經存在,將頻繁變化(我想我的工具連接到一個遊戲,它使用與工具創建的調試元素)的對象。結果,我不相信序列化是合適的,因爲我基本上是沒有充分理由地每秒60次序列化/反序列化對象。因此,管道是不可能的(或者我在這裏錯過了什麼?)。
隨着比賽更是團結運行,我僅限於.NET 3.5技術,所以不能使用新.NET4共享內存類。
所以它看起來像.NET遠程是要走的路。這並不理想 - 我不需要網絡支持,我想分享的對象在內存中,沒有真正的理由使用代理和發送消息來改變它。
然而,每個人鏈接到的this tutorial似乎並不好 - 源代碼不能編譯,當我編譯它時崩潰了。本教程本身沒有提及Cache類,這看起來很重要,即使是源代碼,我也看不到它如何適合我的應用程序。有更好的資源嗎?這真的是最好的方法嗎?
最後我留下與C++內插使用創建共享存儲器和移動對象到它的非託管功能。在我放下那個兔子洞之前,我想確認他們真的不是一個更好的方法。
更新 - 一些更多的信息
目前只是嘗試的事情了所以2控制檯應用程序。然而,最後我有一個C#/ Winforms應用程序(這個是是.NET 4.0,如果有幫助的話)我將連接到Unity進程(顯然我無法控制)。我有一個由工具和Unity使用的DLL。我將有一個允許工具訪問對象的類(例如,如果我可以使用管道,則可以從Unity中調用該類創建管道,然後從該工具連接到管道)。
對象本身本質上表示一個有限狀態機,其描述從XML文件中加載。從極少量的數據中重新創建對象是可能的。但是,我寧願避免手工編碼使用某種事件/信息系統,以保持同步的對象是關於哪個狀態是活動等
快速問題:這兩個應用程序有什麼問題? (即:目標是從統一編譯的可執行文件,工具是形式EXE等)注意:我可能只是嘗試鉤入代碼到目標應用程序,在這種情況下啓動一個線程,然後我有本地控制和訪問目標的其餘部分...線程可以間隔回報給調用者,但我喜歡。 – 2014-01-09 21:12:55
@感謝所有的答案,我會審查他們,並考慮哪些工作最好。閱讀[this](http://stackoverflow.com/a/6091685/958004)答案我看到有一個共享內存可能不足以列出的原因,這使我回到了一個正方形或2 ... –
@ebyrob你能否詳細說明你的意思/如何去實現代碼的動態綁定?如果我正確理解你的話,那聽起來很不錯。 –