我正在尝试在我的应用程序中进行漫长操作期间显示一个指示叠加(点的旋转圆圈)的活动。为此,我创建了一个带有TImage和Imagelist的无边框透明窗体,我在主线程忙时尝试在线程中进行更新。TThread.Execute未按预期方式调用
我遇到的问题是,冗长的操作似乎没有得到我的线程'interupted'。 thread.Execute函数在冗长的操作开始之前循环几次,然后在操作完成时再次循环。
看起来好像该线程由于某种原因而饿死。我试图提高它的优先级,但看不到任何效果。
有没有人有类似的经验分享,甚至可能是一个解决方案?线程函数的
源代码
procedure TIndicatorThread.Execute;
begin
inherited;
while(not Terminated) do
begin
fDlg.fCurindex := (fDlg.fCurindex+1) mod 12;
Synchronize(UpdateImage);
Application.ProcessMessages;
sleep(80);
end;
Synchronize(fDlg.close);
Synchronize(fDlg.Free);
end;
主线程
begin
[...]
myThread := TIndicatorThread.Create;
mythread.Resume;
Init_SomeUIRelatedstuff;
Application.ProcessMessages;
DoLengthyOperation;
mythread.Terminate;
谢谢你的解释。 – sum1stolemyname 2010-09-03 07:05:33