2011-03-30 58 views
0

我用TIdHTTP組件在一個單獨的線程從銀行將XML數據加載中加載數據凍結,但在這段時間裏我的形式是越來越凍結...形式獲取一個單獨的線程

可能是什麼問題呢?我有一個主要的形式和線程類,在線程類我有一個方法稱爲loadData和線程::執行我同步(loadData);

當按鈕被點擊時我創建了線程類的實例,如testThread * t = new testThread(false);

,這一切

當我點擊按鈕的主要形式凍結? 甚至單獨的線程沒有幫助?

請幫忙!!!

回答

0

Synchronize()在主線程的上下文中運行您的loadData()方法,而不是在工作線程的上下文中。這就是爲什麼你的主線程阻塞,而loadData()忙。你錯用了Synchronize(),使你的線程無用。你需要做大量的Synchronize()之外你的線程的工作,然後用Synchronize()僅在需要時,如狀態顯示在主線程中進行小的更新(即使是這樣,Synchronize()並不總是將最好的選擇)。

+0

嗨雷米!我是否需要簡單地調用loadData()方法而不是Synchronize(loadData); – 2011-03-31 11:55:14

+0

是的。只有在需要在主線程而不是工作線程中運行代碼時才使用'Synchronize()'。 – 2011-03-31 22:46:19

+0

AFAIK Synchronize用於更新VCL組件的狀態,因爲我稱之爲loadData();在執行事件,網格顯示什麼? – 2011-04-01 11:01:56

相關問題