public void Close()
 {
     if (this.mhRS == -1)
     {
         return;
     }
     Rs232.CloseHandle(this.mhRS);
     this.mhRS = -1;
 }
        private bool pHandleOverlappedWrite(byte[] Buffer)
        {
            this.muOverlappedW.hEvent = Rs232.CreateEvent(0, 1, 0, (string)null);
            if (this.muOverlappedW.hEvent == 0)
            {
                throw new ApplicationException("Error creating event for overlapped write.");
            }
            Rs232.PurgeComm(this.mhRS, 12);
            this.mbWaitOnRead = true;
            int  num  = 0;
            bool flag = false;

            if (Rs232.WriteFile(this.mhRS, Buffer, Buffer.Length, ref num, ref this.muOverlappedW) == 0)
            {
                int lastError = Rs232.GetLastError();
                if (lastError != 997)
                {
                    throw new ArgumentException("Overlapped Read Error: " + this.pErr2Text(lastError));
                }
                if (Rs232.WaitForSingleObject(this.muOverlappedW.hEvent, -1) == 0)
                {
                    if (Rs232.GetOverlappedResult(this.mhRS, ref this.muOverlappedW, ref num, 0) == 0)
                    {
                        flag = true;
                    }
                    else
                    {
                        this.mbWaitOnRead = false;
                        //if (this.TxCompletedEvent != null)
                        //    this.TxCompletedEvent(this);
                    }
                }
            }
            else
            {
                flag = false;
            }
            Rs232.CloseHandle(this.muOverlappedW.hEvent);
            return(flag);
        }