rundll32
@rundll32

ProgressBar с асинхронными задачами, как сделать правильно?

На форме есть прогрессбар, который заполняется в несколько шагов, по мере загрузки ресурсов, примерно так:
void LoadResources() {
   LockUI(); // выключаем кнопки и т.д.
   LoadImages();
   progressBar1.Value = 25;
   LoadMusic();
   progressBar1.Value = 50;
   LoadFonts();
   progressBar1.Value = 75;
   LoadIcons();
   progressBar1.Value = 100;
   UnlockUI(); // включаем кнопки и т.д.
}


При этом форма с этим прогрессбаром не должна зависать во время выполнения. Самым очевидным решением кажется Task.Run, в котором будет этот метод, но все, что я знаю, это то, что придется выключить флаг Control.CheckForIllegalCrossTreadCall, иначе будет эксепшен. Но я так понимаю, что сам по себе подход не очень правильный, да и этот флаг стоит тоже не просто так, а его отключение это костыль. Как делается правильно?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы