VS2015 C#でメモリマップドファイルのプログラムを書いています。実行時にエラーが出ます。教えてください。

//aaa.csファイル: 
public partial class Form1 : Form {
public struct MMF {
public MemoryMappedFile Com;
}
struct MMVA {
public MemoryMappedViewAccessor Com;
}
public struct MMV {
public Int32 Com;
}
void CreateOpenMMF(MMF mmf, MMVA mmva, String name) {
mmf.Com = MemoryMappedFile.CreateOrOpen( name+"_Com", sizeof(Int32));
mmva.Com = mmf.Com.CreateViewAccessor(); <=ステップ実行で値あり
}
}

//Form1.cs
public partial class Form1 : Form {
MMF[] mmf = new MMF[8];
MMVA[] mmva = new MMVA[8];  
MMV[] mmv = new MMV[8];

private void Form1_Load(object sender, EventArgs e) {
CreateOpenMMF(mmf[1], mmva[1], "a1");
for (int i = 1; i < 2; i++) {
GetSharedMemValue(mmva[i], mmv[i]);
}
}
private void GetSharedMemValue(MMVA mmva, MMV mmv) {
mmv.Com = mmva.Com.ReadInt32(0) ; <=ここで実行時エラー。null参照。mmva.ComはComがnull
}
}


Form1.csからaaa.csの関数に移って、 mmvaを見ると値がはっているが、mmv.Com = mmva.Com.ReadInt32(0)では、mmva.Comはnull

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2017/03/06 09:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kuchikios No.1

回答回数1ベストアンサー獲得回数0

ポイント200pt

refを使用するか、classにした場合はどうでしょうか。

他1件のコメントを見る
id:mai_mai_mail

Ref(参照渡し)してもエラー解消されず。構造体はglobal変数のようにきっているので、その状態でrefしても変わんないと思います。

2017/02/27 17:56:04
id:mai_mai_mail

教えていただいた通り、参照渡しでエラーが取れました。ありがとうございます。

2017/02/27 19:19:03

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません