我想编写定期执行的代码,因此一些搜索似乎表明 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");
}
我的期望是它每秒打印“定时器已触发”。但就我而言,什么也没有打印出来。为什么不起作用?
最佳答案
您的 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 秒的计时器。
关于c++-cx - 线程池计时器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060209/