Sto utilizzando ThreadPool.QueueUserWorkItem per riprodurre alcuni file audio e non riagganciando la GUI mentre lo faccio..NET ThreadPool QueueUserWorkItem Sincronizzazione
Sta funzionando ma ha un effetto collaterale indesiderabile.
Mentre viene eseguito il processo di richiamo di QueueUserWorkItem CallBack, non c'è nulla che impedisca l'avvio di un nuovo thread. Ciò causa la sovrapposizione dei campioni nei thread.
Come posso fare in modo che sia in attesa del completamento del thread già in esecuzione e solo dopo eseguire la richiesta successiva?
EDIT: private object sync = new Object(); lock (sync) { .......do sound here }
questo funziona. gioca nei suoni in ordine.
ma alcuni campioni vengono riprodotti più di una volta quando continuo a inviare richieste sonore prima della fine della riproduzione. indagherà.
MODIFICA: è il precedente risultato di Lock Convoy @Aaronaught citato?
Eventuali duplicati ?: http://stackoverflow.com/questions/1902384/make-a-backgroundworker-do-several-operations-sequentially-without-freezing-the-f/1907501#1907501 – Oliver