我在线程中做的事情是每隔60毫秒往串口发送一个数据
所以我在Execute里面写
procedure TSendThread.Execute;
begin
while not Terminated do
begin
SendCommandBuffer; //这是自己写的函数,往串口发数据用的
sleep(60);
end;
end;
然后CPU就100% 了,我的程序里面只有这一个子线程,优先级是tpLower,那么是不是这个Sleep的问题呢?怎样做到每隔一定的时间做一件事情啊,Timer好像在线程里面也不大好用哦。。
所以我在Execute里面写
procedure TSendThread.Execute;
begin
while not Terminated do
begin
SendCommandBuffer; //这是自己写的函数,往串口发数据用的
sleep(60);
end;
end;
然后CPU就100% 了,我的程序里面只有这一个子线程,优先级是tpLower,那么是不是这个Sleep的问题呢?怎样做到每隔一定的时间做一件事情啊,Timer好像在线程里面也不大好用哦。。
解决方案 »
- 判断操作系统的问题?
- 怎么将事件和函数定义成变量
- delphi的打印问题???(打印不规则表格)
- 很常见的查询功能如何实现?
- 为庆祝俺升4个三角并兼庆祝国庆﹐特推出国庆放分活动﹐未接分者将被降低性欲﹗﹗﹗
- 求购LIS源代码
- 我想在StringGird的每个单元中与表table连接。不知怎么做,教教小弟吧。
- 画实时曲线的时候,怎样让坐标可以随着窗口的放大缩小,自动的缩放比列
- 关于quickreport.
- 简单问题!过节了给分啦?????????????????????????????????
- 如何用DELPHI求两线围成的角度
- CSDN论坛全文检索【系统正在维护,请您稍后再试 】都好几个星期了。没人管的啊?
var lStart: DWord;
begin
lStart := GetTickCount;
while GetTickCount - lStart <= lMilliSeconds do
Application.ProcessMessages;
end;
持有了一个锁(比如TMultiReadExclusiveWriteSynchronizer,或者TRTLCriticalSection),
没有释放(EndRead,EndWrite, LeaveCriticalSection之类)
而主程序当前执行代码正请求这个锁...
英雄所见略同