از BackGroundWorker استفاده کنید
عملیات سنگین در پس زمینه انجام بشه و ترد اصلی برنامه مشغول نباشه

BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += (o, ea) =>
{
System.Threading.Thread.Sleep(500);

کدهای برنامه مثل لود دیتاگراید در اینجا بنویسید


}));
};

worker.RunWorkerCompleted += (o, ea) =>
{
بستن فرم انتظار
};
نمایش فرم انتظار
worker.RunWorkerAsync();