一个急诊,请大家关照啊!!!!!!

Thumb168 2004-04-01 10:04:52
在主程序中执行一个自定义的函数

result:=Readinfo();

//主程序在死等中,一切不能动。
============================================================

Readinfo的定义是这样的。
function Readinfo():string;
begin
// 读取一些信息,可能要等很长时间才能等的到。
end;

===================================================================================================
要达到的目标,在主程序中执行了Readinfo();后,主程序还能动,但是,等不到结果,Readinfo()函数不用返回。
请大家帮忙!
...全文
10 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thumb168 2004-04-01
我用过U are U的开发包,他有一个函数实现这个过程,调用了一个函数后,在等返回值的过程中,主程序还不死。不知道是怎么实现的。
因为我控制的也是一个设备,所以也想这样实现,原以为很简单的,所以程序就以这个思路开发了,可是最后确实现不了了。苦!
回复
Thumb168 2004-04-01
Readinfo()是一定要在主程序中调用的。
回复
Thumb168 2004-04-01
是我写错了,Readinfo()函数不能返回


to stanely(俺是邢她汉子) ,在程序中,主窗体还要进行其它操作!

如果设置工作线程,你的意思应该是这样吧!
function Readinfo():string;
begin
第一步,开启一个线程(线程中读取所的信息)
第二步,等线程结束(因为我要线程结束后的读取结果)

第三步,把结果返结主程序Readinfo:=结果
end;
可是,程序在第二步时,主程序又死掉了。

还请大家帮帮忙啊
回复
stanely 2004-04-01
你说的主程序能动,就是主窗口能够被拖动,但是在函数返回之前不能进行什么操作吧?

如果是这样
那么工作线程,并且让mainform.enabled:=false;当线程结束的时候变成true;
回复
soaringsouth 2004-04-01
Readinfo()函数不用返回?
什么意思?
回复
Thumb168 2004-04-01
谢谢两们,可这样不行,

要达到的目标,在主程序中执行了Readinfo();后,主程序还能动,但是,等不到结果,Readinfo()函数不用返回,同时,主程序还不能死等!
回复
aiirii 2004-04-01
用 CreateThread , 將你的
Readinfo 傳進去執行

也可做個 TThread , 將實現代碼放進去!
回复
tw_cshn 2004-04-01
开另一个线程来执行Readinfo();
回复
Thumb168 2004-04-01
jiju(UNCC) 可是为了开发使用方便,不能要消息的.
回复
jiju 2004-04-01


把第二,3步废掉,线程读完后投消息给主程序教主程序来取值
回复
naughtyboy 2004-04-01
如果ReadInfo中有循环,加上Application.ProcessMessages;
如果没有循环,就按照上面说的,创建一个线程
回复
发动态
发帖子
Windows SDK/API
创建于2007-08-02

1145

社区成员

Delphi Windows SDK/API
申请成为版主
社区公告
暂无公告