6

Window のストア アプリで使用される C++/CX コンポーネントを作成しています。Task.Delay(1000) が C# で行うことを達成する方法を探しています。

4

4 に答える 4

3

古い質問ですが、まだ回答がありません。

使用できます

#include <chrono>
#include <thread>


std::this_thread::sleep_for(std::chrono::milliseconds(1000));

これにはC++11が必要ですが、C++/CX を使用する場合は問題になりません。

于 2013-08-15T06:45:41.097 に答える
0

concurrency::task を作成し、1000 時間単位待ってから、タスクの ".then" メソッドを呼び出すことができます。これにより、タスクを作成してから実行されるまでの間に、少なくとも 1000 時間単位の待機時間が確保されます。

于 2012-12-16T10:57:47.463 に答える
0

私はウィザードであると主張するつもりはありません - 私はまだ UWP と C++/CX にかなり慣れていませんが、私が使用しているのは次のとおりです。

public ref class MyClass sealed {
public:
    MyClass()
    {
        m_timer = ref new Windows::UI::Xaml::DispatcherTimer;
        m_timer->Tick += ref new Windows::Foundation::EventHandler<Platform::Object^>(this, &MyClass::PostDelay);
    }
    void StartDelay()
    {
        m_timer->Interval.Duration = 200 * 10000;// 200ms expressed in 100s of nanoseconds
        m_timer->Start();
    }
    void PostDelay(Platform::Object^ sender, Platform::Object ^args)
    {
        m_timer->Stop();
        // Do some stuff after the delay
    }
private:
    Windows::UI::Xaml::DispatcherTimer ^m_timer;
}

他のアプローチに対する主な利点は次のとおりです。

  1. ノンブロッキングです
  2. XAML UI スレッドでコールバックされることが保証されています
于 2016-12-23T16:05:15.517 に答える