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

Thread與Multi-tier的問題

答題得分者是:Fishman
johnny2212
初階會員


發表:34
回覆:65
積分:39
註冊:2003-04-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-16 23:31:38 IP:61.226.xxx.xxx 未訂閱
function TComChildDM01.SelfThreadUpdates(OwnerData: OleVariant): OleVariant; var MyThread: TThreadUpdates; begin MyThread:=TThreadUpdates.Create(true); ……… MyThread.Resume; End; //以上是呼叫Thread ,TComChildDM01是RemoteDataModule procedure TThreadUpdates.Execute; begin freeonTerminate:=true; synchronize(Dump); // Dump; end; procedure TThreadUpdates.Dump; var MyServer: TComChildDM01; Begin MyServer:= TComChildDM01.create(nil); ………… MyServer.ClientDataSet1.ApplyUpdates(0); …….. // Dump這個procedure,是寫入大量的資料(Dcom傳來的OwnerData) //你或許會問為何不將ClientDataSet1傳到Thread,直接ApplyUpdate, //卻要重新Create RemoteDataModule,我試過了,非常不穩定,一會成功,一會失敗 end; 我的問題在於 1 若不用synchronize(Dump),直接用Dump,不論用Dcom或Com 都很正常,但是 若把Clinet端突然中斷(Terminate),則會出現transaction error,導致整個 Dcom出現問題,Client端一定要等Thread(Dcom)做完才可結束,若非要如此,我 何必用Thread 2 若我用synchronize(Dump),在Dcom上是可以work(只是form畫面被Lock住), 並且Client端突然中斷(Terminate),Thread一樣可以繼續,也就是一切正常 但MtsdataModule (COM ),用synchronize(Dump)卻沒反應,這是怎麼回是? 3 請問有誰能告訴我,我要如何在其中得到最好的方法(Dcom,Com 都可用, Dcom畫面可自由活動,Client端可立刻終止,不影響Thread)
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-02 11:44:20 IP:210.65.xxx.xxx 未訂閱
Hi:    johnny2212,也許你可以試試呼叫一個外部程式來執行 Dump 動作,如此一來,是否就會與 Client 端是否被中斷(Terminate)掉無關了? 當然,外部程式可以在 Client 端或 Server 端被呼叫,視你的需要而定 -------------------------------- 小弟才疏學淺,若有謬誤請不吝指教 --------------------------------
------
Fishman
系統時間:2024-05-08 1:11:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!