关于线程问题(50分)

  • 主题发起人 主题发起人 lidongshengly
  • 开始时间 开始时间
L

lidongshengly

Unregistered / Unconfirmed
GUEST, unregistred user!
请教,为什么我新创建并执行一个线程,设断点调试程序的时候,没有任何代码让程序执行窗体关闭的过程但程序就自动执行窗体关闭过程这是什么原因 ,如何设置线程优先级和同步
 
贴点代码看看
 
li:
if not FileExists(edt_BackPath.Text) then
begin
goto li;
end;

btn_OK.Enabled:=True;
Application.MessageBox('数据备份成功','提示',MB_OK+MB_ICONINFORMATION);
Exit;
Frm_DM.Com_Init.CommandText:= 'BACKUP DATABASE '+SQLDB.Database+' TO Disk='''+edt_BackPath.Text+''' With Init';
Frm_DM.Com_Init.Execute;
Except
btn_OK.Enabled:=True;
Application.MessageBox('数据备份失败,请确认具有访问权限','错误',MB_OK+MB_ICONWARNING);
end;

以上是线程中要执行的代码
创建线程是back:=Tback.create(true);
执行是back.resume;
 
li:
if not FileExists(edt_BackPath.Text) then
begin
goto li;
end;
改为这句试试: while not FileExists(edt_BackPath.Text)do
sleep(3000);
另为:btn_OK.Enabled:=True;这句应该是访问VCL组件的,用Synchronize同步
 
请问如何同步,我是初次接触线程
 
因该把你需要执行的代码使用同步方法调用。就是在Execute里执行Synchronize(事件),这个这个事件写了你需要执行的代码。
 
加在这个Synchronize(事件)里面还是一样出错
 
多人接受答案了。
 
后退
顶部