- PR -

C#でプロセス間でメモリ共有するには

投稿者投稿内容
しん
ベテラン
会議室デビュー日: 2008/05/27
投稿数: 63
投稿日時: 2008-11-12 10:45
言語:VisualStdio C#

プロセス間でメモリ共有を使用したいのですが、
例えば、
プロセスA(EXE)でデータベースから取得したデータを物理メモリにSETし、
セットした値をプロセスB(EXE)でGETして、その値を利用した処理を行いたいのですが
C#でコーディングする場合、SETとGETするにはどういったクラスの関数を使ったらいいのでしょうか?
どなたか知っている方がいらっしましたらご教授ください。


渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-11-12 11:01
引用:

プロセスA(EXE)でデータベースから取得したデータを物理メモリにSETし、
セットした値をプロセスB(EXE)でGETして、その値を利用した処理を行いたいのですが
C#でコーディングする場合、SETとGETするにはどういったクラスの関数を使ったらいいのでしょうか?



標準クラスには、共有メモリを扱う機能を持ったクラスはありません。

.NET 4.0 で FileMapping が追加されるそうですが、それまで待てないのであれば、自作するか、希望する機能を実装したクラスをどこかから探してくるほか無いと思います。
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-11-12 12:01
.NET Frameworkだけではメモリ共有はできないですね・・・

一般的にこう言った場合プロセス間通信を用いる方が多いようですが・・・。
http://d.hatena.ne.jp/tetsuarossa/20070324/p1
しん
ベテラン
会議室デビュー日: 2008/05/27
投稿数: 63
投稿日時: 2008-11-12 13:45
ありがとうございます。

API32を使って共有メモリのI/Oが可能とあったのですが
C#で使用しても問題ないのでしょうか?
すみませんが宜しくご教授ねがいます。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2008-11-12 14:47
引用:

API32を使って共有メモリのI/Oが可能とあったのですが
C#で使用しても問題ないのでしょうか?



間違った使い方をしない限り、問題ないです。
.NET には Windows API を呼び出す仕組み(=P/Invoke)があるくらいなので。
しん
ベテラン
会議室デビュー日: 2008/05/27
投稿数: 63
投稿日時: 2008-11-12 15:07
回答ありがとうございます。

メモリへのデータセットする
メモリからのデータ取得する
上記の処理をAPI("kernel32.dll")で行う場合、
どのような関数を使ったらいいのでしょうか?
知っている方がいらっしゃいましたら、ご教授願います。
参考url等があると助かります。
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-11-12 17:15
まさしくこの通りですね。
http://dobon.net/vb/bbs/log3-31/19304.html

解説そんなに詳しくないですが、ソース見ればわかるレベルだと思います。
ESX3CNK3T5
会議室デビュー日: 2007/09/21
投稿数: 18
投稿日時: 2008-11-12 19:03
参考になれば。
ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=40850&forum=7

スキルアップ/キャリアアップ(JOB@IT)