線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2227
推到 Plurk!
推到 Facebook!

使用IdHTTP時程式沒有回應

尚未結案
cjqupru
一般會員


發表:5
回覆:11
積分:3
註冊:2007-06-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-15 10:00:36 IP:61.219.xxx.xxx 訂閱
我寫了一個程式用IdHTTP來下載網頁的原始碼,
但是當程式正在下載的時候,
整個視窗就會沒有反應,直到下載完畢
後來我想到應該用Thread來作,
於是我找到了一些文章學習Thread,
也試著做了幾個例子,效果不錯,
但是用在IdHTTP上時,問題依舊存在,
不知道哪裡寫錯了?請大家賜教!
以下是我根據某個例子寫個程式碼:
<textarea cols="60" rows="10" class="cpp" name="code"> __fastcall TDLCode::TDLCode(void):TThread(true) { Resume(); } //------------------------------------------------------- void __fastcall TDLCode::Execute(void) { FreeOnTerminate=true; while (!Terminated) { Synchronize(GetCode); DLCode->Terminate(); } } //------------------------------------------------------- void __fastcall TDLCode::GetCode(void) { Form1->Memo1->Text = Form1->IdHTTP1->Get(Form1->Edit1->Text); } //------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { DLCode = new TDLCode; } </textarea>
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-15 10:43:11 IP:61.222.xxx.xxx 訂閱
看來你不是很瞭解 Synchronize 機制。
去掉
Synchronize 吧。將回傳值給予變數。
cjqupru
一般會員


發表:5
回覆:11
積分:3
註冊:2007-06-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-15 13:02:37 IP:61.219.xxx.xxx 訂閱
哇賽!!真是太神了!!
去掉 Synchronize後就不會了,
因為我的BCB知識都是網路上拼湊來的,
什麼都是一知半解的><
不知道是否可以講解一下
Synchronize?
因為我找到的資料都說用
Synchronize記憶體才不會衝突...
===================引 用 wameng 文 章===================
看來你不是很瞭解 Synchronize 機制。
去掉
Synchronize 吧。將回傳值給予變數。
lu
高階會員


發表:11
回覆:189
積分:195
註冊:2003-11-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-15 15:17:10 IP:203.73.xxx.xxx 訂閱
Multi Thread 的程式跟一般程式比起來限制比較多
例如:不可在其他THREAD之中直接操作FORM的可視物件,如下
Form1->Memo1->Text = "Test";

看你的回答,大概就可以猜出來,你連THREAD是什麼都不是粉清楚

建議你先去找本書,搞清楚,什麼是THREAD,以及MULTI THREAD運作的機制,再來寫程式
cjqupru
一般會員


發表:5
回覆:11
積分:3
註冊:2007-06-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-15 16:46:17 IP:61.219.xxx.xxx 訂閱
的確!我只知道THREAD是用來作多執行緒的...
感謝您的建議!
我找個時間去書店逛逛^^

===================引 用 lu 文 章===================
Multi Thread 的程式跟一般程式比起來限制比較多
例如:不可在其他THREAD之中直接操作FORM的可視物件,如下
Form1->Memo1->Text = "Test";

看你的回答,大概就可以猜出來,你連THREAD是什麼都不是粉清楚

建議你先去找本書,搞清楚,什麼是THREAD,以及MULTI THREAD運作的機制,再來寫程式
系統時間:2024-03-29 21:53:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!