コード例 #1
0
ファイル: SlaveMemory.cs プロジェクト: xwyangjshb/qizmt
            internal void start()
            {
                kname = parent.kbasename + "_thread" + threadnum.ToString();

                hmap = SlaveMemory.CreateFileMapping(SlaveMemory.INVALID_HANDLE_VALUE, IntPtr.Zero, SlaveMemory.PAGE_READWRITE, 0, 1 + 8 + 4 + parent.packetsize, kname + "_block" + parent.slavenum.ToString());
                if (IntPtr.Zero == hmap)
                {
                    throw new SlaveMemoryException("Unable to opeb shared memory communication buffer");
                }

                pview = SlaveMemory.MapViewOfFile(hmap, SlaveMemory.FILE_MAP_ALL_ACCESS, 0, 0, 0);
                if (IntPtr.Zero == pview)
                {
                    SlaveMemory.CloseHandle(hmap);
                    hmap = IntPtr.Zero;
                    throw new SlaveMemoryException("Unable to map shared memory communication buffer");
                }

                this.ewh = System.Threading.EventWaitHandle.OpenExisting(kname + "_event" + parent.slavenum.ToString());
                if (parent.usereturnevent)
                {
                    this.ewhreturn = System.Threading.EventWaitHandle.OpenExisting(kname + "_returnevent" + parent.slavenum.ToString());
                }

                this.thread = new System.Threading.Thread(new System.Threading.ThreadStart(slavethreadproc));
                this.thread.Start();
            }
コード例 #2
0
ファイル: SlaveMemory.cs プロジェクト: xwyangjshb/qizmt
 void _clean()
 {
     if (IntPtr.Zero != hmap)
     {
         SlaveMemory.UnmapViewOfFile(pview);
         SlaveMemory.CloseHandle(hmap);
         hmap = IntPtr.Zero;
     }
 }