检查你的代码,看线程启动燃让时,哪个部分的 *** 作导致了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程序先看是否可以正常运行,这个涉及其它类型问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)