Thread與Multi-tier的問題 |
答題得分者是:Fishman
|
johnny2212
初階會員 發表:34 回覆:65 積分:39 註冊:2003-04-09 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |