注意:この記事は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");
});

これなら許容範囲内だと私は思います。

参考:

スポンサード リンク

この記事のカテゴリ

  • ⇒ Metro styleアプリでのC++と非同期
  • ⇒ Metro styleアプリでのC++と非同期