Я использую ThreadPool.QueueUserWorkItem для воспроизведения некоторых звуковых файлов, а при этом не подвешивать графический интерфейс..NET ThreadPool QueueUserWorkItem Синхронизация
Он работает, но имеет нежелательный побочный эффект.
Пока выполняется QueueUserWorkItem CallBack Proc, нет ничего, чтобы остановить его от запуска нового потока. Это заставляет образцы в потоках перекрываться.
Как я могу сделать это так, чтобы он ожидал завершения уже запущенного потока и только затем выполнил следующий запрос?
EDIT: private object sync = new Object(); lock (sync) { .......do sound here }
это работает. играет в звуках по порядку.
, но некоторые образцы воспроизводятся более одного раза, когда я продолжаю отправлять звуковые запросы до того, как один из них будет завершен. будет исследовать.
РЕДАКТИРОВАТЬ: Вышеупомянутый результат Lock Convoy @Aaronaught упоминается?
Возможный дубликат ?: http://stackoverflow.com/questions/1902384/make-a-backgroundworker-do-several-operations-sequentially-without-freezing-the-f/1907501#1907501 – Oliver