2013-07-18 4 views
0

실버 라이트 애플리케이션을 빌드합니다. 콘텐트가로드되기 전에 진행 표시 줄을 보여 주므로 몇 초 동안 진행 막대를 전달해야합니다.Silverlight 페이지를 몇 초 동안 기다리는 방법

저는 system.threading.thread.sleep (1000)을 사용하고 있지만 UI가 고정됩니다.

나는 그것이 UI를 동결 안 및 프로세스는 몇 시간 동안 기다려야에 실버의 대안 ... 기본 모든으로

답변

1

는 UI 스레드에 필요하므로, 어떠한 시간이 많이 걸리는 작업은 UI를 차단합니다 . 이를 방지하기 위해, 백그라운드 스레드로 실행을 밀어 - 그 한 가지 방법은 Task.Factory입니다 :

Task.Factory.StartNew(() => { 
    Thread.Sleep(1000); 
}); 

그런 다음 다음 UI와 아무것도 (난 당신이하고자한다고 가정한다), 수행하려는 경우, 그 UI 스레드로 돌아 가야합니다. 백그라운드 스레드가 UI를 변경하려고하면 런타임에서 예외가 발생합니다. Dispatcher :

Task.Factory.StartNew(() => { 
    // sleep on a background thread 
    Thread.Sleep(1000); 

    // when complete, return to the UI thread to prevent access violation 
    Application.Current.Dispatcher.BeginInvoke(() => { 

     // do UI stuff here 
    }); 
}); 
을 사용하여 실행합니다.
관련 문제