我程序的意图是,在主线程里启动一个定时器,没隔2秒钟去扫描一下,如果当前线程已经结束了,我就再启动
一次线程,如果当前线程还未结束,则什么也不做,等待下一个时钟消息。
现在的问题就是:我现在根本无法判断当前进程是真正结束了,还是正在运行呢?
我原先是通过一个m_bThreadFlag标志来判断当前线程是否正在运行的,但运行起来,很不准确,经常是当前线程还未结束
就又启了一个线程。
我查找了一些资料,好像通过GetExitCodeThread来判断当前程序是否在运行,不知用在我这里还行吗,此外我现在是把pScanThread->m_bAutoDelete=FALSE;//线程为手动删除
这样每次线程退出去之后,线程的资源是不是不会释放的,必须在我准备启动下一次线程时,把上一次的线程资源给释放掉了,
这样子做,对我判断线程是否结束有没有什么影响呢?大家帮帮忙啊,谢谢了程序如下://启动定时器,扫描设备是否存在,如果存在,即开启扫描线程
SetTimer(11,2000,NULL);void CDlgInfo::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch (nIDEvent)
{
case 11:
if(m_bThreadFlag==FALSE)//当前线程没有启动,则启动当前线程
{
KillTimer(11);
//启动线程
pScanThread=AfxBeginThread(ScanThread,this);
pScanThread->m_bAutoDelete=FALSE;//线程为手动删除
m_bThreadFlag=TRUE;
SetTimer(11,2000,NULL);
}
}
CDialog::OnTimer(nIDEvent);
}
UINT CDlgInfo::ScanThread( LPVOID pParam)
{
CDlgInfo *pDlg=(CDlgInfo *)pParam;
do
{
pDlg->SendSnmp();
Sleep(1000);
}
while(pDlg->m_bPowerFlag==TRUE); pDlg->m_bThreadFlag=FALSE;
return 0;
}
一次线程,如果当前线程还未结束,则什么也不做,等待下一个时钟消息。
现在的问题就是:我现在根本无法判断当前进程是真正结束了,还是正在运行呢?
我原先是通过一个m_bThreadFlag标志来判断当前线程是否正在运行的,但运行起来,很不准确,经常是当前线程还未结束
就又启了一个线程。
我查找了一些资料,好像通过GetExitCodeThread来判断当前程序是否在运行,不知用在我这里还行吗,此外我现在是把pScanThread->m_bAutoDelete=FALSE;//线程为手动删除
这样每次线程退出去之后,线程的资源是不是不会释放的,必须在我准备启动下一次线程时,把上一次的线程资源给释放掉了,
这样子做,对我判断线程是否结束有没有什么影响呢?大家帮帮忙啊,谢谢了程序如下://启动定时器,扫描设备是否存在,如果存在,即开启扫描线程
SetTimer(11,2000,NULL);void CDlgInfo::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch (nIDEvent)
{
case 11:
if(m_bThreadFlag==FALSE)//当前线程没有启动,则启动当前线程
{
KillTimer(11);
//启动线程
pScanThread=AfxBeginThread(ScanThread,this);
pScanThread->m_bAutoDelete=FALSE;//线程为手动删除
m_bThreadFlag=TRUE;
SetTimer(11,2000,NULL);
}
}
CDialog::OnTimer(nIDEvent);
}
UINT CDlgInfo::ScanThread( LPVOID pParam)
{
CDlgInfo *pDlg=(CDlgInfo *)pParam;
do
{
pDlg->SendSnmp();
Sleep(1000);
}
while(pDlg->m_bPowerFlag==TRUE); pDlg->m_bThreadFlag=FALSE;
return 0;
}
解决方案 »
- mfc 在一个CDialog上添加一个CWnd,CWnd上创建一个edit 控件,为什么鼠标点击edit控件时,edit控件仍然无法正常获得焦点?
- 在CScrollView里面画一个波形,可以通过拉动滚动条查看全部波形,怎么画啊?
- static 这个方式为做老有不加分号的错误???
- libraw1394支持windows平台吗
- socket的阻塞
- 谢谢请各位提供一些国外技术网址 ?顺便问问(技术铁),如何监控80端口流量?
- 自动代理服务器
- VC编辑窗里可以显示行号吗?
- 线程是否可以接受消息?
- 问两个函数!!!!
- 在IP控件显示IP,谁有类似的代码,
- #####请教一个ip阻隔的问题######
判断返回值
WaitForSingleObject等待事件的发生等
离开线程时g_bFlag = true;