UI에서 과중한 작업이 발생하면 Busy Indicator를 표시 할 수 있습니까? 우리 앱에서 장기 실행 태스크의 대부분은 컨트롤을 렌더링하는 것이므로 컨트롤이 렌더링되는 동안 표시기를 표시해야합니다.Silverlight - 사용중인 UI 스레드에 BusyIndicator 표시
답변
UI 스레드가 사용중인 동안에는로드 애니메이션을 표시 할 수 없지만 적절한 텍스트가있는 TextBlock
컨트롤과 같은 정적 알림을 표시 할 수 있습니다. 그러나 TextBlock
컨트롤의 텍스트를 업데이트 한 직후에 UI 스레드에서 장기 실행 작업을 시작하면 작업이 끝날 때까지 컨트롤의 UI가 업데이트되지 않습니다. 이 문제를 극복하기 위해 다음 질문의 대답에 설명 된 기술을 사용할 수 있습니다 : Showing a text indicator before freezing the Silverlight UI thread.
먼저 장기간 작업을 수행하기 위해 백그라운드 스레드를 사용하십시오. 이것이 불가능한 경우, 즉 UI 스레드에 UI 구성 요소를로드하는 데 오랜 시간이 걸리는 경우,로드 중 부품 위에 오버레이로 바쁜 표시기를 놓고 모든 것이로드 될 때 오버레이를 숨길 수 있습니다.
그런데 UI 로직을 UI에서 분리하지 않고 반응 형 멀티 스레드 앱을 작성하기가 어렵습니다. 'MVVM'패턴을 연구하십시오. MVVM을 사용하면 앱이 도약 할 것입니다.
진지한 앱은 '코드 숨김'을 사용하지 않습니다. 즉 모든 것이 DataContext, 데이터 바인딩, ViewModels 및 명령을 통해 수행됩니다.
그렇지 않으면 Tasks 또는 BackgroundWorker를 사용하여 Dispatcher를 이해하십시오.
누가 복음
무거운 작업이 (지연을 사용하여)를 호출하기 전에 실행 바쁜 지표를 설정하는 DispatcherTimer를 사용해보십시오.
그런 다음 과중한 작업이 완료되면 표시기를 비활성화 할 수 있습니다.
저에게 맞습니다.
'enable busy indicator & set up the timer'
Private Sub renderControl(ByVal sender As Object, ByVal e As RoutedEventArgs)
_busyIndicator.IsBusy = True
Dim timer As New DispatcherTimer
timer.Interval = TimeSpan.FromMilliseconds(100)
AddHandler timer.Tick, AddressOf renderControl_TimerTick
timer.Start()
End Sub
'do your heavy task, disable busy indicator then stop the timer'
Private Sub renderControl_TimerTick(ByVal sender As Object, ByVal e As EventArgs)
DoStuff()
_busyIndicator.IsBusy = False
'Stop the timer'
TryCast(sender, DispatcherTimer).[Stop]()
End Sub
희망이 있습니다.
- 1. Silverlight BusyIndicator
- 2. silverlight 툴팁 Silverlight 5의 BusyIndicator 섀도우 효과
- 3. Silverlight BusyIndicator : 모든 ChildWindows보다 높은 Z- 색인
- 4. Silverlight BusyIndicator 콘텐츠 사용 안 함
- 5. nunit에서 UI 스레드에 액세스
- 6. UI 스레드에 CALayer.contents가 그립니까?
- 7. 비 UI 스레드에서 UI 스레드에 액세스
- 8. BusyIndicator 컨트롤
- 9. 양식의 UI 스레드에 액세스하고 있습니까?
- 10. WP7 - UI 스레드에 액세스 하시겠습니까?
- 11. Silverlight UI culture
- 12. Silverlight 4에서 BusyIndicator 컨트롤에 취소 단추를 추가하는 방법은 무엇입니까?
- 13. Ui 스레드 외부에서 UIElements 만들기 Silverlight
- 14. MVVM을 사용하는 BusyIndicator
- 15. 실버 BusyIndicator 배경 색상
- 16. Silverlight UI Thread Freezing
- 17. silverlight animated UI
- 18. Silverlight 2 UI 패턴
- 19. Silverlight UI TextBlock의 자동화
- 20. UI 스레드에 있는지 확인하는 방법은 무엇입니까?
- 21. 별도의 스레드에 NSTimer가 UI 요소를 묶지 않아요.
- 22. 루퍼의 도움으로 UI 스레드에 액세스/게시 메시지
- 23. AsyncTask를 사용하여 UI 기본 스레드에 값을 반환
- 24. UI 스레드에 액세스하지 않고 BackgroundWorker에서 "UnauthorizedAccessException"가져 오기
- 25. 자바 스크립트 디버깅 - 사용중인 변수 표시
- 26. Silverlight 페이지 수준 활동 감지
- 27. Silverlight 응용 프로그램 UI 업데이트
- 28. 비 블로킹 UI WPF/Silverlight
- 29. Silverlight, 처리 중 UI 업데이트
- 30. Silverlight 3 Combobox Ui 가상화
이것을 확인하십시오. http://forums.silverlight.net/post/556179.aspx –
감사합니다. 이미 확인했습니다. :) – arcbound08