如何解决如何在特定时间段后使用vc ++在线程中使用计时器创建文本文件?
我已经尝试过此代码每分钟后生成相同的文本文件,但是在控制台应用程序上不起作用。我正在使用vs2017
void CALLBACK f(HWND hwnd,UINT uMsg,UINT timerId,DWORD dwTime)
{
ofstream myfile;
myfile.open("C:\\log.txt",ios::app);
myfile << " : test" << "\n";
myfile.close();
KillTimer(hwnd,timerId);
}
unsigned int __stdcall mythread(void* data)
{
while (startii == 0)
{
SetTimer(0,// handle to main window
0,// timer identifier
10000,// 10-second interval
(TIMERPROC)&f); // no timer callback
return 0;
}
int main()
{
myhandle = (HANDLE)_beginthreadex(0,&mythread,0);
}enter code here
解决方法
使用std::thread
和std::this_thread::sleep_for(std::chrono::milliseconds(7000))
左右。
线程本身看起来像这样
UINT CALLBACK hammersmith(VOID *c)
{
while (1)
{
std::unique_lock<std::mutex> lb(com_m);
sp_tray = std::shared_ptr<int>(new int(7));
com_r = sp_tray;
lb.unlock();
sp_tray.reset();
}
return 0;
}
或对_beginthreadex
使用类似的线程函数。您可以使用winapi的Sleep()
。并且CALLBACK
包含stdcall内容,请改用它。
计时器来自16位Windows时代
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。