//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
refを使用するか、classにした場合はどうでしょうか。