DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wjy13061029975
今日帖子: 3
在线用户: 3
导航: 论坛 -> 网络通讯 斑竹:liumazi,sephil  
作者:
男 caiyang (caiyang) ▲▲▲▲▲ -
普通会员
2011/9/16 19:41:24
标题:
请教一个在TIMER中调用DELAY的问题,谢谢! 浏览:1686
加入我的收藏
楼主: 网上找的DELAY函数
procedure Delay(msecs:integer);
var
Tick: DWord;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
    Tick := GetTickCount + DWord(msecs);
    while (msecs > 0) and (MsgWaitForMultipleObjects(1, Event, False, msecs, QS_ALLINPUT) <> WAIT_TIMEOUT) do
    begin
      Application.ProcessMessages;
      msecs := Tick - GetTickcount;
    end;
finally
    CloseHandle(Event);
end;
timer1周期为30秒,每隔一段时间(10-2000毫秒)发一个指令,这样会造成程序在运行期间很难关闭,或者打开子窗口一直都关掉,或者子窗口移动不了,请问是不是delay函数造成的呢?
procedure TForm1.Timer1Timer(Sender: TObject);
begin
   if radiobutton1.checked=true then
  begin
    if idtelnet1.Connected then
    begin
      idtelnet1.SendCh('1');
    end;
    delay(2000);
    if idtelnet1.Connected then
    begin
      idtelnet1.SendCh('2');
    end;
    delay(2000);
    if idtelnet1.Connected then
    begin
      idtelnet1.SendCh('3');
    end;
    delay(2000);
    if idtelnet1.Connected then
    begin
      idtelnet1.SendCh('4');
    end;
    delay(2000);
    if idtelnet1.Connected then
    begin
      idtelnet1.SendCh('%');
    end;
    delay(2000);
    if idtelnet1.Connected then
    begin
      idtelnet1.SendCh('!');
    end;
    delay(2000);
    if idtelnet1.Connected then
    begin
      idtelnet1.SendCh(#');
    end;
    ...
    ...
    ...
  end;
end;
如果只修改delay函数的话,有什么方法可以很快地解决呢?
----------------------------------------------
-
作者:
男 caiyang (caiyang) ▲▲▲▲▲ -
普通会员
2011/9/16 19:47:34
1楼: 补充一下,期间程序运行是正常的,从我提取显示的数据可以看到程序一直都在处理数据,且一点都不占CPU,只是打开子窗口很难关闭或移动,主程序关闭要一段时间才响应。
----------------------------------------------
-
作者:
男 tiny_bird (delphi_tokyo) ★☆☆☆☆ -
盒子活跃会员
2011/9/16 22:05:32
2楼:  你还是耐心学学线程吧,了解线程才算会编程了
----------------------------------------------
winsock api,通讯,多线程,VCL,Java
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行68.35938毫秒 RSS