【发布时间】:2016-09-16 17:11:54
【问题描述】:
我正在 Visual Studio 2013 中编写 MFC 程序,但我不断收到以下两个错误
Error C2893 Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...)'
和
Error C2672 'std::invoke': no matching overloaded function found
错误与文件 xthread 第 238 行有关
我是 c++/MFC 的新手,我正在尝试编写一个将在后台运行到系统时间的函数。
这是我正在使用的代码:
void task1(ExperimentTab& dlg)
{
while (true)
{
CString showtime = CTime::GetCurrentTime().Format("%H:%M:%S");
int x = dlg.m_showTime.GetWindowTextLengthA();
dlg.m_showTime.SetWindowTextA(_T(""));
dlg.m_showTime.ReplaceSel(showtime, 0);
}
}
void mainThread()
{
std::thread t1(task1);
t1.join();
}
然后在按下按钮时调用它来开始时间,但同样的按钮也用于停止时间。
【问题讨论】:
-
在这里从多线程中获益甚少。请改用计时器(请参阅CWnd::SetTimer),并将所有内容保存在单个线程上。额外的好处:您不会烧毁整个 CPU 内核,只是为了更新当前时间。而且您实际上可以关闭您的进程,而无需进入任务管理器。
标签: c++ visual-studio-2013 mfc