撒大苏打手术费阿飞个 2016-01-13 14:45 采纳率: 0%
浏览 1766

mfc线程挂起唤醒操作问题

HANDLE hThread;
CWnd *pWnd;

UINT TextShow(LPVOID pParam)
{
CString szLine;
//打开文件
CStdioFile file;
file.Open(_T("E:\1.txt"), CFile::modeRead);
//逐行读取字符串
while (file.ReadString(szLine))
{
pWnd->SetWindowText(szLine);
hThread = GetCurrentThread();
SuspendThread(GetCurrentThread());
}

//关闭文件
file.Close();
return 0;

}

void CMFCApplication2Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
pWnd = GetDlgItem(TEXTT);
AfxBeginThread(TextShow,NULL);

}

void CMFCApplication2Dlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
ResumeThread(hThread);
}

我想做一个文本逐行读取的小程序,每次输出一行后暂停,用户点击按钮后继续输出下一行后暂停,这样循环下去,但是现在可以暂停点击唤醒线程的按钮去没反应不能继续执行,请问怎么解决呢

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-01-13 15:34
    关注

    实践中,不要用ResumeThread、SuspendThread,这样做容易导致死锁、内存泄漏等问题。你应该让你的线程去wait一个信号量来让它暂停。你从概念上都错了。

    评论

报告相同问题?

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?