Interlocked.Increment лучше, чем блокировка, но цикл опроса в конце меня пугает. Во-первых, если вы собираетесь выполнить цикл, то выполните Thread.Sleep (0), чтобы каждый раз освобождать процессор. Во-вторых, если вы собираетесь опрашивать переменную, вам нужно убедиться, что она помечена как volatile или вы используете MemoryBarrier, иначе компилятор может предположить, что никакой внешний поток не изменит ее, и поэтому оптимизирует проверку, что приведет к бесконечности цикл. * * 1 001
Еще лучше было бы, чтобы каждый поток проверял, что он достигает нуля, и устанавливает событие, если это так. Затем вы можете ждать события вместо опроса. Единственная хитрость заключается в том, что вы хотите один раз увеличить в главном потоке перед циклом отправки, затем уменьшить и проверить на ноль перед ожиданием события.
редактировать
Если он сломан из-за повторного использования триггера, значит, закрытие неверно. Попытка копирования значения world в локальную переменную внутри цикла и использование этой переменной для лямбда-выражения.