10周年のSPコンテンツ!
9
尾上 雅則 @ugaya40
大変遅れましたが XAML Advent Calender 2014 12/10分公開いたしました>< qiita.com/ugaya40/items/… WPF、怒りのDataContext伝播
リンク Qiita WPF、怒りのツリー外DataContext伝播 - Qiita この記事は [XAML Advent Calender 2014](http://qiita.com/advent-calendar/2014/xaml)の 12/10分の記事です。 自分のブログが復活していないので復活次第そちらへも...
白い高野さん @masaru_b_cl
@ugaya40 これ、最後の段について、「非同期はVMではなくMで扱う」にもつながる話、とよみましたがあってます?
尾上 雅則 @ugaya40
@masaru_b_cl はい、そういうことです。Livetレベルから制約を加えるか検討しています
白い高野さん @masaru_b_cl
@ugaya40 やはり。なんというか、面白いですねぇ。
白い高野さん @masaru_b_cl
非同期処理をMで閉じて、MのNotifyPropertyChangedをVMではReactivePropertyで拾う、とかやるとスッキリしそうねぇ
じんぐる @xin9le
@masaru_b_cl そのMの非同期処理を開始するのは誰ですか?
白い高野さん @masaru_b_cl
@xin9le VMが叩けば、ってあれ?投げっぱなしで叩くことってできるんでしたっけ?
じんぐる @xin9le
@masaru_b_cl 投げっぱなしはできますが、それが良いかどうかですよね。結局VMが非同期処理を開始するなら、そこでawaitすれば良いのでは?感が湧き上がるので。
白い高野さん @masaru_b_cl
@xin9le 私もその辺り、知見がないので自分の中での結論は出せないんですよね。ただ、PDSという面で見れば、非同期処理ってPの都合関係ないなとは思います。
白い高野さん @masaru_b_cl
WPF+MVVMでなんか非同期通信するアプリ書いてみないと、自分の中で結論出せない。
白い高野さん @masaru_b_cl
個人的にはスクリーンキャストとかでVMでも非同期派とMだけで非同期派で殴りあってるの見たい
白い高野さん @masaru_b_cl
ReactiveProperty、Knockoutのko.observable()っぽいところも含んでるのだな。
Ktz @ktz_alias
@masaru_b_cl VMはasync/awaitで同期的に扱い、Mだけ非同期にするのがいいと思う
白い高野さん @masaru_b_cl
@ktz_alias Mにasync Taskなメソッドはやして、VMからは await model.DoSomething(param); するってことですよね?
白い高野さん @masaru_b_cl
あれ?なんかよくわからんくなってきたな。
白い高野さん @masaru_b_cl
Mにasync Taskなメソッドはやす→それを呼ぶVMにもasyncキーワード登場って理解で合ってるよね?
白い高野さん @masaru_b_cl
で、この記事みたいにICommandの実装がasync void Execute(param)になる? > 非同期プログラミング - 非同期 MVVM アプリケーションのパターン: コマンド msdn.microsoft.com/ja-jp/magazine…
白い高野さん @masaru_b_cl
async void Executeにごちゃごちゃ書かないで、await m.DoSomething(param);だけになることを目指すのが、現実解って感じなのかな?
Ktz @ktz_alias
@masaru_b_cl 基本はそれでいいと思う。問題はMから連続的にストリームでデータがやってくる場合で、単純にawaitできないので、VMはRxにSubscribeする形にする必要がありそう。多分RxはMに用意(定期的にプッシュするため)
尾上 雅則 @ugaya40
@masaru_b_cl @xin9le VMは同期でModelたたけばいいんですよ。
尾上 雅則 @ugaya40
@masaru_b_cl @xin9le なぜならModelのメソッドに戻り値はないからです
白い高野さん @masaru_b_cl
@ugaya40 @xin9le Mには async void DoSomething(param)良いして、その中でawaitってことですよね?
残りを読む(110)

コメント

白い高野さん @masaru_b_cl 2014年12月12日
まとめ者の主観によるハイライトをやめました。
ログインして広告を非表示にする
ログインして広告を非表示にする