본문 바로가기
WPF

C# UI Thread 에러 발생할 경우

by leo21c 2023. 2. 13.

C#에서 UI Thread 오류가 발생할 경우 아래와 같이 하나의 UI가 끝날 때까지 DoEvents() 함수를 호출하고 일정 시간이 지난 후에 UI 변경을 하도록 처리한다.

for (int i = 0; i < 10; i++)
{
    System.Windows.Forms.Application.DoEvents();
    System.Threading.Thread.Sleep(1);
}

Tree의 Popup 메뉴로 창을 띄우는 코드를 하는데 Tree가 선택되어 Expand 되는 도중에 ShowDialog가 호출되어 UI Thread 오류가 발생했다. 그래서 Expand가 끝나는 시간까지 DoEvents 함수를 호출하게 한 후에 ShowDialog가 호출되니 오류가 발생하지 않았다.