Вот пример кода, как вы можете загрузить свои файлы в асинхронном режиме.Может быть, это поможет вам.Мне нравится этот способ больше, чем использование DoEvents.С DoEvents у меня уже были некоторые плохие побочные эффекты, поэтому я стараюсь не использовать их.
BackgroundWorker bgWorker = new BackgroundWorker() { WorkerReportsProgress=true};
bgWorker.DoWork += (s, e) => {
// Load here your file/s
// Use bgWorker.ReportProgress(); to report the current progress
};
bgWorker.ProgressChanged+=(s,e)=>{
// Here you will be informed about progress and here it is save to change/show progress. You can access from here savely a ProgressBars or another control.
};
bgWorker.RunWorkerCompleted += (s, e) => {
// Here you will be informed if the job is done.
// Use this event to unlock your gui
};
bgWorker.RunWorkerAsync();