Я сомневаюсь, что добавление элементов управления в WinForm может быть медленным. ИМХО, что, вероятно, ухудшает производительность, это выборка данных, которые к ним привязаны. Так, например, вы можете загрузить данные в новый поток и, как только они будут загружены, связать их с элементом управления:
ThreadPool.QueueUserWorkItem(o =>
{
// Simulate some expensive data fetch.
Thread.Sleep(1000);
string[] data = new[] { "value1", "value2" };
if (InvokeRequired)
{
Action a = () => { listBox1.DataSource = data; };
// Ensure that all UI updates are done on the main thread
Invoke(a);
}
});