嘿傢伙!我有一個線程。當線程執行時,一個無限循環開始,讀取類的成員變量。奇怪的代碼執行:執行在while循環的中間開始!
奇怪的是,一切都很好,特定的點,while循環開始在中間執行。
代碼:
procedure MyThread.Execute;
var
i: Integer;
begin
NameThreadForDebugging('MyThread');
while True do
begin
if (PrevLine1 <> CurLine1) and (PrevLine2 <> CurLine2) then
begin
{some code}
PrevLine1 := CurLine1; //<-- The place where execution starts...
PrevLine2 := CurLine2;
{some code}
end;
Sleep(500);
end;
self.Terminate;
self.Destroy;
end;
我可以到處設置斷點在此過程中,但它停止在
PrevLine1 := CurLine1; //<-- The place where execution starts...
CurLine1是它可以通過對象的屬性來改變私有成員。它一切正常,但只有一次發生錯誤的行爲。
有沒有人遇到類似的事情或知道要採取哪些步驟來解決這個問題?
在此先感謝!
您是否有兩個版本的文件,一個是由IDE找到的(先查找搜索路徑),另一個是由編譯器找到的(先查看項目的源路徑)。這在Delphi 2007中經常發生,當你同時有幾個樹結帳時。另一個可能的幫助是構建所有。 – 2011-02-23 10:26:26
你可能會發現有趣的問題[德爾福有任何相當於C的揮發性變量?](http://stackoverflow.com/questions/232075/does-delphi-have-any-equivalent-to-cs-volatile-variable) – 2011-02-23 10:36:43
@Nick我不確定C'volatile'與線程有什麼關係? – 2011-02-23 12:19:41