Ничего не требуется. Используйте Application.DoEvents(); //repaint or respond to msg
Например:
foreach (DirectoryInfo subDir in dirInfo.EnumerateDirectories())
{
count = count + 1;
listBoxControl4.Items.Add(count.ToString() + ":" + subDir.FullName);
Application.DoEvents(); //allow repaint to see status
ProduceListing(subDir, " ");
}
Это будет проходить через все папки рекурсивно и записать имена в список. Это может занять много времени. С помощью DoEvents () он будет показывать прогресс в каждом цикле. В принципе, вызов позволяет окнам в этом потоке обновлять что-либо в цикле windows msg. Обязательно наблюдайте за непреднамеренной рекурсией, как любой элемент управления в форме, который нужно нажать, даже если ваш первый не завершился. Это хорошо работает. (Это копия старого вызова Delphi Application.ProcessMessages (). Вы можете найти это, чтобы понять, почему он работает и что нужно отслеживать.