有時候這個函數會鎖定我的程序,直到我關閉它纔會凍結。 這裏有什麼問題?德爾福:TThreadList有時會鎖定程序
function del_from_list(id:string):boolean;
var i : integer;
begin
Result := True;
try
with global_list.LockList do
begin
for i:=0 to Count-1 do
begin
if Tthread_list(Items[i]).id = id then
begin
Delete(i);
break;
end;
end;
end;
finally
global_list.UnlockList;
end;
end;
類
Tthread_list = class
public
id : string;
constructor Create(const id: string);
end;
我添加到列表這樣的:
global_list.Add(Tthread_list.Create('xxx'));
全局列表是一個全局變量
我認爲沒有理由認爲這應該導致掛起。這是所有的應用程序中的代碼掛起? –
最有可能你有一個典型的死鎖情況,但這個代碼本身不能導致它。某處必須有另一個鎖。 –
您正在刪除列表中的類對象項目,而不先釋放對象。如果因此發生異常,您的程序將被鎖定。雷米(您接受)的答案解決了鎖定問題,但不是主要錯誤。 –