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

請問該如何當主程式關閉時,thread也同時強制關閉呢

尚未結案
17kobe
初階會員


發表:86
回覆:73
積分:31
註冊:2007-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-05-23 20:53:23 IP:124.8.xxx.xxx 訂閱
程式碼大約如下,但是就是卡在idhttp這一行,有時候連線網頁也連很久。而我關閉主程式時,很明顯他還在跑,所以當我再度開啟程式時。他正更新資料庫,而出現"當非同步執行時,不可執行操作"的錯誤。
我想要無論如何,主程式被關閉時,thread也同時都關閉,請問該如何來做呢。
[code delphi]
//主程式
the_thread.OnTerminate := ThreadDone;

//thread執行序程式
constructor TGetThread.Create(urlPosition : string; dbname:string; fundio:string);
begin
if Terminated then
FreeAndNil(self);

FreeOnTerminate := True;
inherited Create(False);
end;

procedure TGetThread.Execute;
begin
Download;
end;

procedure TGetThread.Download;
var
ms : TMemoryStream;
buf, s : string;
time_td : integer;
idh : Tidhttp;
begin
ms := TMemoryStream.Create;

idh := Tidhttp.create(nil);
idh.HandleRedirects:= true;
idh.RedirectMaximum := 1;
idh.ConnectTimeout := 10000;
idh.ReadTimeout := 10000;


idh.OnWorkBegin := IdHTTP1WorkBegin;
idh.onWork :=IdHTTP1Work;
Form1.IdAntiFreeze1.OnlyWhenIdle := False;
idh.Get(exchange_name,ms);
....
//更新資料庫
end;
[/code]

補充一下看是不是改ADOConection的方式也可以
我ADOConnection的IsolationLevel=ilReadCommitted
所有的ADOConnection及ADOQuery都放在DataModule上面
編輯記錄
17kobe 重新編輯於 2008-05-23 20:54:36, 註解 無‧
17kobe 重新編輯於 2008-05-23 22:05:14, 註解 無‧
系統時間:2024-04-27 4:14:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!