我正在嘗試在我的應用程序中進行漫長操作期間顯示一個指示疊加(點的旋轉圓圈)的活動。爲此,我創建了一個帶有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