Windows 10 UWP UI非同期更新処理の書き方変更(バージョン7.0.0~)

びえびえ's Personal webpage  > UWP, Windows 10, Yet Another備忘ログ >  Windows 10 UWP UI非同期更新処理の書き方変更(バージョン7.0.0~)
0 Comments

プログラマの世界は秒針分歩くらいの勢いで変わるのでね・・・

 Windows 10 Microsoft.UWPパッケージがバージョン7.0.0になってから、UIの非同期更新を行う際に使っていたMicrosoft.Toolkit.Uwp.Helpers.DispatcherHelper.ExecuteOnUIThreadAsyncが非推奨になったみたい。今のところ警告がうざったいだけで(Visual Studioでも緑破線が付いてうざったい・・・)使用することはできますが、うざくなってきたら以下のようにDispatcherQueueを使う、ということに変更になりそうです。基本的にはDispatcherQueueってキューにアクション(関数)を放り込んでおくとメインの処理系とは別の優先度で動作しているスレッドにて順番に実行してくれる、というものですね。まぁUIThreadに限らずに放り込めるというので、従前使っていた Microsoft.Toolkit.Uwp.Helpers.DispatcherHelper.ExecuteOnUIThreadAsyncよりは汎用性が高いというメリットがあるんでしょうね。

private void do_button() {
    DispatcherQueue queue = App.dispatcher; // UI実行しているスレッドから取得しておく。Appが簡単だったのでAppで取得しておいた
    Task task = 
        queue.EnqueueAsync(async() =>
 {
        // UI関係の処理.中でawaitしちゃうような処理があれば、EnqueueAsyncのラムダ式にはasyncを付けておく
        });
    });
}

 まぁちょっと面倒くさくなるけれど、DispatcherQueueさえUIスレッド上で取得しておけばいいわけですので、合わせてみましょうかね。6.xベースだと文句は言われないので、しばらくはバージョンアップしない、というてもありそうですけれど・・・。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です