mfc两个独立线程会卡顿

mfc两个独立线程会卡顿,第1张

这是的线程耗用了大部分的皮毁局CPU时间,这跟线程多少没太大关系,有些进程有几十个线程在同时跑,都不会卡。

检查你的代码,看线程启动燃让时,哪个部分的 *** 作导致了CPU占用很高,能不能优化下。

具体处理方法,UINT CMainUIThreadWaitDlg::StartThread(LPVOID pParam)

{

((CMainUIThreadWaitDlg*)pParam)->ThreadWork()

return 0

}

void CMainUIThreadWaitDlg::ThreadWork()

{

OutputDebugString(_T("+++++Start+++++\r\n"))

Sleep(20*1000)

OutputDebugString(_T("++++++End+++++\r\n"))

}

void CMainUIThreadWaitDlg::DoEvent()

{

MSG msg

if(::PeekMessage(&msg,NULL,0,0,PM_REMOVE)) //取消息,检索应用程序的消息队列,PM_REMOVE取过之后从余码消息队列中移除

{

//发消息

::TranslateMessage(&msg)

::DispatchMessage(&msg)

}

}

CWinThread* pThread = NULL

void CMainUIThreadWaitDlg::OnBnClickedBtnWork()

{

m_btnWork.EnableWindow(FALSE) //按钮禁灰

pThread = AfxBeginThread(StartThread,this) //起线程

DWORD dwRet

DoEvent()

do

{

dwRet = ::MsgWaitForMultipleObjects(1, &pThread->m_hThread, FALSE, INFINITE, QS_ALLINPUT)

if (dwRet != WAIT_OBJECT_0)

{

DoEvent()

}

} while ((dwRet != WAIT_OBJECT_0) &&(dwRet != WAIT_FAILED))

m_btnWork.EnableWindow(TRUE) //按钮点亮

}

。。MFC是C++类库,你在使用Windows的SDK编程吗?没有的话,结束这些进程,就旅尺粗睁退出这个应用程序开发框架环境了。拆凳高如果是在使用,说明你用的电脑配置低了,系统资源被耗尽。

“打开程序后,没有绝简运行程序”什么意思,你是说,点击运袜搭行程序后没有界面出现,但进程管理器有该程序么?这样就是你代码的问题,一般是死循环之类的程序逻辑错误吧,这个要看具体代告宏拿码才行。

另外,向导创建的空MFC程序先看是否可以正常运行,这个涉及其它类型问题。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12443550.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存