while(1)
{
bFind = finder.FindFile("f:\\open\\dataname\\*.*");
while(bFind)
{
...
}
Sleep(100);
}
我想让该循环0.1秒轮询一次,这样虽然可以实现,但是形成了死循环,窗口显示等操作就被挂起了,其他操作都做不了,该怎么做比较好呢,多线程好实现吗?如果不用多线程有没有其他办法,麻烦高手指导一下啊!
{
bFind = finder.FindFile("f:\\open\\dataname\\*.*");
while(bFind)
{
...
}
Sleep(100);
}
我想让该循环0.1秒轮询一次,这样虽然可以实现,但是形成了死循环,窗口显示等操作就被挂起了,其他操作都做不了,该怎么做比较好呢,多线程好实现吗?如果不用多线程有没有其他办法,麻烦高手指导一下啊!
{
bFind = finder.FindFile("f:\\open\\dataname\\*.*");
while(bFind)
{
bFind = finder.FindNext();
...
}
Sleep(100);
}
CreateThread(NULL,0,ConVerst,this,0,NULL);//创建线程 ConVerst线程函数static DWORD WINAPI ConVerst(LPVOID lparmer);//线程函数定义DWORD ConVerst(LPVOID lparmer)
{
while(1)
{
bFind = finder.FindFile("f:\\open\\dataname\\*.*");
while(bFind)
{
...
}
Sleep(100);
}
return 1;}
定时器的方式应该是最简单的,SetTimer的时候,弄成0.1秒的间隔即可。
bFind = finder.FindFile("f:\\open\\dataname\\*.*");
while(bFind)
{
...
}
这个系列介绍的不错
http://www.vckbase.com/document/viewdoc/?id=1704
结束时:KillTimer
{
bFind = finder.FindFile("f:\\open\\dataname\\*.*");
while(bFind)
{
bFind = finder.FindNext();
}
Sleep(100);
}
把这段代码放在全局函数或静态函数中这样就可以了,怎么会死循环呢?
像这种函数应该另启线程。
void Cxx::fnFileFind
{
bFind = finder.FindFile("f:\\open\\dataname\\*.*");
...}继承onTimer
void Cxx::OnTimer(UINT nID)
{
switch()
{
case 1:
fnFileFind();
break;
}
}调用
setTime(1,100,NULL);OK