Ok, quindi ho dovuto riscrivere completamente la mia risposta. Dopo 2 giorni di test devo dire che il codice di JasonS ha alcuni difetti, credo a causa degli Enumeratori. Mentre un thread utilizza foreach e l'altro modifica l'elenco, genera eccezioni.
Così ho trovato this answer, e funziona bene per me delle ultime 48 ore non-stop, credo che più di 100k discussioni sono stati creati nella mia richiesta, e usato che le liste.
L'unica cosa che ho cambiato - ho spostato inserendo le serrature di fuori della sezione try-finally. Read here sulle possibili eccezioni. Inoltre, se leggerai MSDN, hanno lo stesso approccio.
Ma, come sono stati menzionati nel link qui sotto, elenco non può essere al 100% thread-safe, probabilmente è per questo che non v'è alcuna implementazione ConcurentList di default in C#.
Per essere chiari, si desidera utilizzare ogni istanza da più thread contemporaneamente? Più thread muteranno la lista? –
Date un'occhiata a concorrenza: http://geekswithblogs.net/BlackRabbitCoder/archive/2011/02/10/c.net-little-wonders-the-concurrent-collections-1-of-3.aspx – Silvermind