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(); }
void _clean() { if (IntPtr.Zero != hmap) { SlaveMemory.UnmapViewOfFile(pview); SlaveMemory.CloseHandle(hmap); hmap = IntPtr.Zero; } }