Window のストア アプリで使用される C++/CX コンポーネントを作成しています。Task.Delay(1000) が C# で行うことを達成する方法を探しています。
4453 次
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;
}
他のアプローチに対する主な利点は次のとおりです。
- ノンブロッキングです
- XAML UI スレッドでコールバックされることが保証されています
于 2016-12-23T16:05:15.517 に答える