Почему именно вам нужно ждать при перечислении?
Если коллекция IEnumerable изменяется во время ее просмотра, вы получите исключение, так что на самом деле никакие элементы не могут быть добавлены или удалены другими потоками, пока вы работаете с ним.
Учитывая это, почему искусственная задержка? Просто используйте его так, как он есть, и позвольте планировщику распределить работу между вашими потоками.
Если вы хотите действительно очень точное время ожидания, я предлагаю вам использовать Thread.Sleep (время - 20 мс), а затем заняться ожиданием подходящего времени.
Только операционная система реального времени может дать вам такую точность. Вы можете предположить, что Thread.Sleep имеет точность около 20 мс, поэтому теоретически вы можете спать до нужного времени - фактическое время составляет около 20 мс, а затем вращение в течение 20 мс, но вам придется тратить эти 20 мс. И даже это не гарантирует, что вы получите результаты в режиме реального времени, планировщик может просто вывести ваш поток, когда он собирался выполнить RELEVANT-часть (сразу после вращения)