我想编写定期执行的代码,因此一些搜索似乎表明ThreadPoolTimer符合我的需要。这是我尝试实现它:
MainPage::MainPage()
{
// Timer code
TimeSpan period;
period.Duration = 100000000000; // 1 second
ThreadPoolTimer::CreatePeriodicTimer(ref new TimerElapsedHandler(this, &MainPage::TestTimer), period);
}
// Dummy method to test timer
void MainPage::TestTimer(Windows::System::Threading::ThreadPoolTimer^ timer)
{
OutputDebugString(L"Timer triggered\n");
}
我的期望是它每秒打印“定时器触发”。但在我的案子中没有打印出任何内容。为什么不起作用?
答案 0 :(得分:2)
您的TimeSpan似乎不正确。我只是尝试了以下代码来生成1秒计时器。
MainPage::MainPage()
{
InitializeComponent();
TimeSpan period;
period.Duration = 10000000; // 1 second
ThreadPoolTimer::CreatePeriodicTimer(ref new TimerElapsedHandler(this, &MainPage::TestTimer), period);
}
void MainPage::TestTimer(Windows::System::Threading::ThreadPoolTimer^ timer)
{
OutputDebugString(L"Timer triggered\n");
}
我相信你的代码产生了10000秒计时器。