FrameworkC#を使ってプロセス間でデータ共有をする際にオブジェクトを共有する方法です。プロセス間でオブジェクトを共有したい場合、大抵の場合構造体を定義してメモリに書き込めばすれば良いとネットに書いてあります。普段クラスで扱っているデータをその時だけ構造体にするのは結構手間です。オブジェクトを構造体で定義するのも手間です。定義の方法もC#ではすごくマイナーな相互運用で構造体を記述する知識が必要なのでもっと簡単にオブジェクトを共有できる方法を紹介したいと思います。考え方は以下の通りです。昨今のWebのプロトコル風にJSONを利用します。この方法だと変換が入るため実行速度が若干低下します。C++と連携してネイティブから読み出した場合も割と簡単に読み出せると思います。準備データを共有するための実装を作先に準備します。共有するクラスの準備まず共有したい型の定義です。後でシリアライズするのでクラスに以下のように[DataContract]および、[DataMember]属性を目印として付与します。既存クラスの場合も属性の追加だけで大丈夫です。JSON文字列の相互変換を定義します。メッセージへシリアライズします。Jsonメッセージをオブジェクトへデシリアライズします。上記のクラスを使って実際にオブジェクトを共有します。サーバー側サーバー側ではItemオブジェクトを作成してJSONに変換後に共有メモリにデータを展開します。}}読み取り側は共有メモリに実際にどれくらいデータが書き込まれているかわかりません。そのため、共有メモリの先頭4バイトの領域にデータサイズを書き込んでいます。クライアント側クライアント側の実装です。オブジェクトにデシリアライズを行います。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。ArticleC#で属性を利用して処理に制約の説明を追加するUnityで自動実装プロパティに表示名を指定するCocos2d-xをやめてUnityに移行した話@2019冬C#で文字列にSQLのIN句のようなメソッドを追加するC#のDateTimeとC++のtime_tを相互変換するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。