在应用程序窗口中加个定时器,那么定时器和应用程序是同一线程吗? 如果是同一线程,当主应用程序打开模式对话框时,定时器仍能收到 消息并执行; 如果是两个线程,那我在定时器中做个死循环,主程序也死了。请高手支招。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Self.Timer1.Enabled := false;
while (1=1) do
begin
sleep(500);
end;end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Self.Timer1.Enabled := false;
while (1=1) do
begin
sleep(500);
end;end;
解决方案 »
- IDTCPServer的OnExecute事件中将接收的数据写入数据库中?但是它是多线程的,共同访问一个ADOQuery会有问题吗?
- dbgrid的显示问题
- 有时间没来了,问问bsSkin控件里的Hint控件怎么用呀??
- delphi中如何把许多函数写在一个unit文件中,然后其它单元调用呢?
- “贺岁华东行”--与技术总监和Borland产品专家面对面2004元旦期间课程简介
- 在线求救 急急
- 谁又能通俗说一下paradox表中的键,主键和索引的区别啊,小弟我先谢过各位了
- 请问如何对DBGrid多选项进行处理?????
- QQ里传送文件的功能是如何实现的?
- ADO如何连接SqlServer!哪位大虾快帮帮我!
- 怎样通过Delphi编程获取USB CA证书内容?用什么组件或API函数?谢谢大家!请高人指点!分数不够再加分!
- 本地数据库的数据如何上传至中间层?
? 你是说单线程应用中,现在我是按多线程中写To 楼主要搞明白进程和线程是不一样的!!!
K,这我还不明白,看清我的题意。高手来呀
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Self.Timer1.Enabled := false;
while (1=1) do
begin
application.ProcessMessages;
sleep(50);
end;
end;
看看还死不死
showmodal看上去死不了是因为showmodal中另外建立了一个消息处理循环. 此时application中主消息处理循环已经block了
1、那定时器的定时处理函数是不可能与主程序同时执行了(可是我的定时处理函数中和主程序中都用到了同一个adoquery组件, 有时会出现adoquery已经关闭的提示,我认为是定时器处理函数打开刚要用,主程序又将其关掉的问题)
2、如果定时器消息来到时,主程序在执行其它费时的操作,只有在此费时操作完成后,定时器的消息处理函数才能处理此消息, 那么定时器接收的消息有可能不是按规定的时间(有可能晚来)
Timer1Timer(...)
{
Timer1->Enabled=false;
//...处理...处理...处理
Timer1->Enabled=true;
}