Получение формы для немедленного показа должно быть довольно простым, и вам не нужен фоновый поток для этого.
Я предполагаю, что вы извлекаете все эти данные до загрузки формы или извлекаете данные в том же потоке, который загружает форму. Вы должны иметь возможность вызывать форму с данными, необходимыми для извлечения остальных данных (например, идентификаторов).
Тогда вам просто нужно найти способ обработки данных в потоке, отличном от потока, создающего форму.
Возможно, это не самое элегантное решение, но оно выполняет свою работу. Он использует System.Windows.Forms.Timer
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
//fill controls with data
}
Если у вас есть несколько наборов данных, которые вы извлекаете, вы можете рассмотреть возможность создания очереди задач для получения каждого набора.
Любым способом, которым вы это делаете. Обязательно отключите все кнопки (или другой пользовательский интерфейс), которые могут вызвать ошибки, если данные не загружены.
Редактировать: Следует отметить, что элементы управления winform не всегда хорошо работают с потоками. Приятной особенностью System.Windows.Forms.Timer
(в отличие от System.Timers.Timer
) является то, что он предназначен для приятной игры с элементами управления.