我在DLL中设置一个定时器往一个变量写入数据,在主程序中读取这个变量的值,结果读变量的循环体使DLL中定时器的消息响应函数得不到执行的机会,代码如下,请高手指点,万分感谢!
(1)//DLL 程序
Int value;//变量
void StartTimer()//启动定时器
{
Int interval=10;
SetTimer(NULL,1,interval,TimerProc);
}
void TimerProc()//定时器消息处理
{
value++;
}
Int GetValue()//获取变量值
{
Return value;
}
(2)//主程序
StartTimer();//启动DLL中的定时器
While(1)
{
GetValue();//无休止的调用DLL中的GetValue()函数后,
//DLL中的TimerProc()永远得不到执行,
//获得的值永远不变,怎么解决?
sleep(1);
}
(1)//DLL 程序
Int value;//变量
void StartTimer()//启动定时器
{
Int interval=10;
SetTimer(NULL,1,interval,TimerProc);
}
void TimerProc()//定时器消息处理
{
value++;
}
Int GetValue()//获取变量值
{
Return value;
}
(2)//主程序
StartTimer();//启动DLL中的定时器
While(1)
{
GetValue();//无休止的调用DLL中的GetValue()函数后,
//DLL中的TimerProc()永远得不到执行,
//获得的值永远不变,怎么解决?
sleep(1);
}
1.要么你GetValue()也放到SetTimer里面做
2.要么你开个线程。
{
GetValue();//无休止的调用DLL中的GetValue()函数后,
//DLL中的TimerProc()永远得不到执行,
//获得的值永远不变,怎么解决?
sleep(1);
}
===========
你自己都说了这里TierProc没有办法执行,那就不能这样写啊
你可以将GetValue的调用放在TimerProc中去,这样就不用写while循环了。
或者写成这样:
While(1)
{
GetValue();//无休止的调用DLL中的GetValue()函数后,
GetMessage(....);
}
(1)主程序是用户定死的,他就是要这样写:
//主程序
StartTimer();//启动我写的DLL中的定时器
While(1)
{
GetValue();//调用我写的DLL中的函数 获取 DLL中的变量值
sleep(1);
}
(2)用户要我写一个DLL让他上面的主程序调用,他要我提供这样的功能:
循环不停地 在精确的时间间隔内 计算变量的值;
用户的主程序随时可以读取这个变量的值。也就是说我能写、能修改的就是这个DLL的程序,而用户的主程序是不让我修改的。
而我的这个DLL该如何写才能实现用户的要求?
高精度多媒体时钟应用类 http://blog.csdn.net/zgl7903/archive/2008/06/25/2584675.aspx