你好!
使用 C++11 标准,<thread>
.
我有一个在后台运行的线程thread.detach()
。在这个线程中有setWallpaper(bool status)
一个无限循环的函数:
setWallpaper(bool status) {
if(!status) {
MessageBox(NULL, status, L"STOP", MB_OK);
}
while (status) {
PVOID path = getPath(rand() % 8 + 1);
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE);
Sleep(min * 1000);
}
}
如果我们调用这个函数并传递变量的值false
,那么循环仍在运行,但应该已经结束了。为什么我不明白。你能告诉我吗?如何停止/结束循环?谢谢)
用于
std::future
等待并发出完成信号:发射:
在第二次调用该函数时,由于存在无限循环,前一次调用未完成。
我用自己的方式做到了,它似乎有效,对我来说已经足够了:)
status
并且interval
在全球范围内。是的,我知道这是不对的,但我会做的)
当您单击“停止”按钮时: