UIで重いタスクが発生しているときにビジー状態を表示することはできますか?私たちのアプリでは、長時間実行されるタスクの大部分はレンダリングコントロールであり、このコントロールがレンダリングされている間にインジケータを表示する必要があります。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、およびコマンドによって行われているとします。
それ以外の場合は、タスクまたは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 BusyIndicator背景色
- 3. WPF Toolkit BusyIndicator
- 4. Silverlight BusyIndicator:すべてのChildWindowsより高いZ-インデックス
- 5. スレッドが起動しない他のスレッドがビジー状態です
- 6. UserControlをカスタムBusyIndicatorコントロールにバインドする
- 7. Silverlight 4で印刷中にBusyIndicatorを表示するにはどうすればよいですか?
- 8. IsBusy = trueに設定した後でSilverlight BusyIndicatorが表示されないのはなぜですか?
- 9. BusyIndicatorを強制するには?
- 10. アプリがビジー状態のときのアクティビティインジケータの表示
- 11. Kenticoカスタムモジュールでビジー状態を表示する方法
- 12. Microsoft.WindowsAzure.Storage.StorageException - サーバーがビジー状態の
- 13. ビジー状態インジケーターが表示されない
- 14. WPF拡張ツールキットBusyIndicatorテキストがカットオフ
- 15. シートへの書き込み中にビジー状態の画像を表示
- 16. WPFアプリケーションがビジー状態のときにwaitcursorを表示する方法データバインディング
- 17. リソースがビジー状態の場合に限り、スレッドとワーカーキューを生成する
- 18. iCloudのビジー状態のクエリcaldav
- 19. ビジー状態のインジケータが透明
- 20. Entity Frameworkがデータをロードしているときにビジー状態のインジケーターを表示する
- 21. BluetoothGattオブジェクトがビジー状態です
- 22. Azure Storage Explorer:サーバーがビジー状態です
- 23. GoogleカレンダーAPI、「ビジー」状態でフィルタリングする
- 24. SilverlightのブロックUIスレッドOnNavigatingFrom
- 25. pthreadスレッド状態
- 26. 重いqmlファイルをロード中にQML BusyIndicator
- 27. ナンシーアクセスモデルの状態を表示
- 28. セマンティックUIノーマルボタンを変更してローディング状態を表示する
- 29. WpfのBackgroundWorkerでBusyIndicatorを実行できません
- 30. UserControlとViewModelを使用したWPFのBusyIndicator
これを確認してくださいhttp://forums.silverlight.net/post/556179.aspx –
ありがとうございました。 – arcbound08