Rellene ListBox con un IEnumrable en otro hilo (winforms)

Me pregunto cuál sería la mejor manera de poblar un control ListBox de un WinForm, poblado dependiendo de una radio btn.

He visto algunas sugerencias para usar un foreach para recorrer cada objeto de mi lista y agregarlos () a listBox.items.Add (), pero esto parece ser una muy mala idea, ya que la lista de rabio btn 1 devuelve una lista con 10.000 registros (toma un poco de tiempo en silencio y la UI se congela mientras se repite, mala idea).

¿Hay alguna manera mejor de hacer esto, y tal vez en una tarea separada para detener la congelación de la interfaz de usuario?

private void PopulateListBox()
{
    foreach (var item in Controller.ReturnBigResultSet())
            this.Invoke((MethodInvoker)(() => listBox1.Items.Add(item)));
}

ACTUALIZACIÓN: bloque de código con AddRange:

var watch = new Stopwatch();
watch.Start();
var list = Controller.GetAllEntries().ToArray();
Debug.WriteLine("List returned in {0}s with a size of {1}", watch.Elapsed.TotalSeconds, list.Count<Lejlighed>());
watch.Restart();
listBox1.Items.AddRange(list);
watch.Stop();
Debug.WriteLine("Added {0} items in {1}s", listBox1.Items.Count, watch.Elapsed.TotalSeconds);

Salida es:

List returned in 3.8596527s with a size of 19022
Added 19022 items in 1.9223412s

Respuestas a la pregunta(1)

Su respuesta a la pregunta