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); }