2012-05-30 22 views
-6

我有很多項目的列表視圖。 我想刪除一些同步的項目。 這可能嗎? 我有大約100個線程同時訪問ListView刪除它的項目。TListView中的同步刪除?

例如:

procedure Thread1 ; stdcall; 
var 
    item : TlistItem; 
begin 
    //... 
    item.delete; 
    //... 
end; 

procedure Thread2 ; stdcall; 
var 
    item : TlistItem; 
begin 
    //... 
    item.delete; 
    //... 
end; 

/.... and so on 

的線程都在同一時間(他們之間也許1ms的差)解僱。 然後我收到很多錯誤和AccessViolations。 請幫忙。謝謝:)

+5

您不能從應用程序的主線程以外的線程訪問VCL可視化控件。 IDE甚至會插入註釋以告訴您,當您自動使用「File | New | Other | Thread Object」時。這解釋了錯誤和訪問違規。 (順便說一下,當你輸入'error'或'access violation'時,你應該輸入的**接下來的事情**是確切的錯誤信息或訪問衝突信息,包括任何內存地址。其他信息沒有意義,我們無法從這裏看到你的屏幕。:-) –

+0

好的,本傑明。我會刪除我的第二條評論,只是減少了你的問題,而不是給你一個編輯它的機會來改進它。對不起,試圖幫助。 –

+0

你能否再解釋一次爲什麼你會低估這個問題? –

回答

3

如果我是你,我會創建一個數據結構,主應用程序線程和所有更新線程都可以訪問,並且可以同步,並且只有主應用程序線程用於更新VCL控制,如果這是你需要去的方式。

+0

很好的答案!謝謝。 –