注意:この記事はWindows 8 Consumer Preview時点でのものです。この内容も将来に渡って正しい内容とは限りません。
「Metro StyleアプリでのMessageBoxの代わりっぽいやつ」の続編です。
このように、この結果を受け取るだけで非同期になるようですよ。なんの支援もないと相当厳しいです。C#ならasyncとか使えるみたいですが、Visual C++はどうなんでしょう?
Windows 8のConsumer PreviewおよびVisual Studio 11 βでこの懸念が解消されました。Parallel Patterns Library (PPL)にWindows Runtimeへの対応が入ったのです。なお、PPLは、Visual C++ 2010より存在する並行処理のためのライブラリです。
というわけで、前回のサンプルはこのように書けます。
// #include <ppltasks.h> using namespace Concurrency; using namespace Windows::Foundation; using namespace Windows::UI::Popups; auto d = ref new MessageDialog("Hello world"); task<IUICommand^> a(d->ShowAsync()); a.then([this](IUICommand^ op) { // …… ButtonOk->Content = ref new String(L"Done"); }); |
これなら許容範囲内だと私は思います。
参考:
- Windows ランタイムの非同期性により高速で滑らかなアプリにする – Windows 8 アプリ開発者ブログ – Site Home – MSDN Blogs
- C++ における Windows ストア アプリ用の非同期操作の作成 (Creating Asynchronous Operations in C++ for Metro style Apps) – MSDNライブラリ
- task Class (Concurrency Runtime)、task クラス (同時実行ランタイム) – MSDNライブラリ
スポンサード リンク |
[…] イグトランスの頭の中(のかけら) » Metro styleアプリでのC++と非同期 投稿日: 2012年5月8日 作成者: sfpgmr イグトランスの頭の中(のかけら) » Metro styleアプリでのC++と非同期. […]