ProgressBar를 활용해서 먼저 사용자에게 진행상황 다이얼로그를 보여주고, 큰 작업을 수행하면서 진행상황을 뿌려주는 화면을 구현 중에 궁금한 사항이 있어서 질문드립니다.
async void GetLargeLogs()
{
progressDlg.Show();
IList<Log> logs = await Task.Run(() => LoadLargeLogs(ProgressDlg.progress));
progressDlg.Close();
ShowLogs(logs);
}
위와 같이 UIThread에서 로그들을 불러오지 않고 Thread를 새로 생성 후 로그를 불러오면 progressDlg가 출력되면서 작업 후, progressDlg를 종료하는 로직이 완벽하게 동작합니다.
void GetLargeLogs()
{
progressDlg.Show();
IList<Log> logs = LoadLargeLogs(ProgressDlg.progress);
progressDlg.Close();
ShowLogs(logs);
}
위와 같이 UIThread에서 로그들을 불러오면 프로그래스 화면이 보이지 않고 화면이 멈춰있다가 로그들이 다 불러와져요. UI 쓰레드를 사용하니까, 로그들을 불러오는 동안 화면이 멈춘다는 것은 이해가 되는데, 궁금한 것은 progressDlg.Show()
가 먼저 호출했음에도 불구하고, 프로그래스 화면이 왜 보이지 않는 것인지 궁금합니다.