小弟在编写一个科学计算程序,因为计算时间很长,所以考虑到用户可能停止已经开始的计算,需要在计算过程中随时可以停止该计算。但是现在我编写的程序只要开始计算,便不能停止,只能等到计算结束,用户才能进行其他操作。请问如何解决?
解决方案 »
- 非DELPHI专业的我,诚恳的问一下数据库基础的问题!
- SocketConnection连接服务器的超难问题。^_^
- 请教备份问题!我想将一个access数据库让作备份和数据导入!
- 一维39条形码识别
- TTreeView中如何在点击一个subitem是触发onchick事件,属性窗里好象没有。
- 谁有关于在WINDOWS中新建一个目录的相关API!!!
- 一个关于显示form的初级问题
- 急,请大家帮忙!
- 谁能描述一下Tstring,Tstringlist和,Tstringgrid?谢谢
- 如何在DELPHI中动态生成SQL查询语句?(本人分数有限!)
- 字符串转换的问题 !
- 多元方程求解的代码(求源代码)?
寫到線程, 必要時可挂起線程, 或中止線程
如果你的科学计算程序没有用到数据库,那就用INI实现。
比如:你的程序一次计算由5个过程来实现。
function mycalculate:Boolean;
begin
procedure1;
procedure2;
procedure3;
procedure4;
procedure5;
result := true;
end;
你要改造成:
function mycalculate:Boolean;
begin
result := false;
procedure1;
if UserCancel then Exit;
procedure2;
if UserCancel then Exit;
procedure3;
if UserCancel then Exit;
procedure4;
if UserCancel then Exit;
procedure5;
result := true;
end;function UserCancel:Boolean;
var
strlist: Tstringlist;
begin
strlist := Tstringlist.create;
try
strlist.loadfromfile('c:\mycalc.ini');
result := strlist.values['alreadycancel']=1;
finally
strlist.free;
end;
end;取消按钮的代码只需要
procedure button1click;
var
strlist: Tstringlist;
begin
strlist := Tstringlist.create;
try
strlist.loadfromfile('c:\mycalc.ini');
strlist.values['alreadycancel']:=1;
strlist.savetofile('c:\mycalc.ini');
finally
strlist.free;
end;
end;以上代码没有试验过,不知道是否可行?