Buenas prácticas a la hora de materializar un IEnumerable

Hola buenas, os comento mi problema.

Estoy en Unity3D, y bueno, su API es un tanto farragosa, ya que solamente te deja usar sus métodos en el main thread, y bueno, y quiero usar un Parallel.ForEach para acelerar un proceso. Básicamente, lo que necesito hacer es recorrer un IEnumerable…

El problema está en que el valor del IEnumerable viene de un método de la API de Unty3D y claro, este IEnumerable no lo llego a usar (no lo materializo) hasta q estoy dentro del Parallel.ForEach (este se ejecuta en otro hilo) por lo tanto estoy recibiendo un error. Me gustaría saber si hay alguna forma de hacer que se pierda la referencia o de materializarlo (sin usar .ToList(), ya que por lo que he visto es un método muy pesado).

El código funciona perfectamente sin materializarlo, ya que lo he probado todo en el main thread, pero como digo, al star dentro de Unity algo tengo que hacer, lo optimo seria dejarlo sin materializar y trabajar con esta IEnumerable tal cual como esté. Ya que el propio hecho de materializarlo consumira recursos innecesarios.

El código que ahora mismo tengo es el siguiente:

Justamente acabo de volver a dejar como estaba todo antes. Así no me funcionaría.

¿Qué puedo hacer?