private void ThreadProc() { while (!m_Finished) { Advance(); if (m_FillProc != null && !m_Finished) { m_FillProc(m_CurrentBuffer.Data, m_CurrentBuffer.Size); } else { // zero out buffer byte v = m_zero; byte[] b = new byte[m_CurrentBuffer.Size]; for (int i = 0; i < b.Length; i++) { b[i] = v; } Marshal.Copy(b, 0, m_CurrentBuffer.Data, b.Length); } m_CurrentBuffer.Play(); } WaitForAllBuffers(); }