コード例 #1
0
        private static bool there_is_room_in_cbuf1(byte p_num_bytes_to_write)
        {
            bool result = false;
            int  num    = 0;

            if (p_num_bytes_to_write > 255)
            {
                return(result);
            }
            if (p_num_bytes_to_write > USBWrite.m_cbuf1_avail_bytes)
            {
                while (p_num_bytes_to_write >= USBWrite.m_cbuf1_avail_bytes)
                {
                    if (num++ >= 6)
                    {
                        break;
                    }
                    USBWrite.m_cbuf1_avail_bytes_mutex.WaitOne();
                    USBWrite.m_cbuf1_avail_bytes = USBWrite.this_many_bytes_are_actually_available_in_cbuf1();
                    USBWrite.m_cbuf1_avail_bytes_mutex.ReleaseMutex();
                    if (p_num_bytes_to_write < USBWrite.m_cbuf1_avail_bytes)
                    {
                        result = true;
                        break;
                    }
                    Thread.Sleep(100);
                }
            }
            else
            {
                result = true;
            }
            return(result);
        }