@ufcpp ちなみに、async/awaitってC#の機能で、WinRTではないですよね?それがごっちゃになってて、WinRTでサンプル作ったので、スレッド周りがわからなくて困ってました^^; ふつうの.NETの環境でやってみます
2012-03-15 01:53:29@kaorun55 https://t.co/KRPyEjjR 今のコードだと、こんな挙動です。たぶん全然意図通りじゃないと思われます。
2012-03-15 01:58:02@ufcpp あー、こんなにスレッドできるんですね… 自分の理解はこんなかんじだったので、だいぶ違いますf^_^;) http://t.co/rUKf2bRa
2012-03-15 02:02:23@kaorun55 C# の機能です。WinRTはIAsyncOperationでしたっけ、で非同期処理の結果返してますが、それ用のAwaiterが用意されています。
2012-03-15 02:03:00@kaorun55 基本、awaitするときに明示的にTaskのStartしちゃダメなんですよ。Result直呼びもブロックしちゃうのでダメ。
2012-03-15 02:04:08@kaorun55 あー、でも、意図を見ると、ContinueWithより後ろの挙動考えると1つは別タスク起動しないとダメですねぇ。えーっと、ちょっとコード書きます。
2012-03-15 02:09:04@ufcpp なんか、すいませんというか、ありがとうございますというか^^; 前述のとおり、コードにasyncの理解の意味以上はないので、その点あしからず...
2012-03-15 02:10:51@kaorun55 多分意図するコードはこうではないかと → http://t.co/CAqvjrP3 WPFで書いてるものの、おそらくコピペでMetroでも使えるかと。
2012-03-15 02:16:29@kaorun55 今のコードだとたぶん全部UIスレッド上で実行されるのではないかと。awaitするまでは全部同期実行で、await後は同期コンテキスト経由でUIスレッドに戻ります。
2012-03-15 02:53:38@ufcpp あー、なるほど。非同期なのに、表は全部UIスレッドで動いてるってすごいですねぇ。みなさんこういう情報をどこからとってきてるんですか^^;
2012-03-15 02:55:27@kaorun55 awaitがらみだと、//build/の資料と、MSDNブログですかねぇ。あと、IL Spyで中身覗き。
2012-03-15 02:57:22