안 상태 (C 번호는 .NET 4.0 2013 VS) (UI 스레드로 불림)는 다음 코드는 1 초 UI 스레드를 정지 :UI 스레드 정지가
new Thread(new ThreadStart(() =>
{
Dispatcher.BeginInvoke(new Action(() =>
{
Thread.Sleep(1000);
}));
})).Start();
Thread.Sleep()
은 자리 표시 자입니다. 실제 코드에서는 일부 UI 요소에 액세스하고 시간을 많이 소비하는 계산을 수행합니다. 그것도 UI 스레드에서 실행됩니다!
UI 스레드가 아닌 다른 스레드에서 실행하면 안됩니까? 나는 무엇을 놓쳤는가?
Dispatcher를 사용하여 UI 스레드에서 작업을 실행하면 잠시 차단됩니다. – Samuel
백그라운드 스레드에서 UI에 액세스하면 예외가 발생합니다. UI 요소에 대한 업데이트는 주 스레드에서 수행해야하며 Dispatcher.BeginInvoke (...)를 사용할 수 있습니다. – Onots