撒大苏打手术费阿飞个 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一个信号量来让它暂停。你从概念上都错了。

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥50 成都蓉城足球俱乐部小程序抢票