COM 可以 free 內部產生而被外界參考的物件嗎? |
尚未結案
|
suda
一般會員 發表:17 回覆:63 積分:16 註冊:2002-05-10 發送簡訊給我 |
請問 COM 可以 free 內部產生而被外界參考的物件嗎?
雖然 COM可以在參考為0時自行Destroy,但是在有些地方我還是喜歡自行控制物件的生死,就如VCL物件般的在Destroy時將子物件free,不過使用COM物件我卻無法自行控制,我試過用_RefRelease,CoDisconnectObject()等等的方法,可是都吃鱉,有那位高人可以給一些指點
ex.
ObjectB產生在ObjectA中
refC:=ObjectB(被外部或其他的object參考)
objectA:=nil;(雖然ObjectA Free了,但是ObjectB還存在)
refC:=nil;(此時ObjectB 才真正的Free);
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
suda
一般會員 發表:17 回覆:63 積分:16 註冊:2002-05-10 發送簡訊給我 |
引言: You can... by using the object's Free method. But it would probably raise exception when your reference (to its interface) is being set to nil later.我有試著在ObjectA.Destroya時將TObjectB.Free,而ObjectB確實已Free 但是在程式結束時如你所說會出現錯誤,我想是最後程式將所有 參考設為nil可是ObjactB己Destroy了,難道要改寫_Addref及_Release或是原本就不可以這樣子. 因為ObjectB為ObjectA的子物件若ObjectA destroy而ObjectB因為尚有參考而存在,其ObjectB不可使用且佔據資源,故希望可以找出像VCL的物件生命週期控制模式 用這兩Class可行嗎? TContainedObject TAggregatedObject 發表人 - suda 於 2004/01/05 11:52:50 發表人 - suda 於 2004/01/05 11:54:01 發表人 - suda 於 2004/01/05 12:26:00 |
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
suda
一般會員 發表:17 回覆:63 積分:16 註冊:2002-05-10 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
suda
一般會員 發表:17 回覆:63 積分:16 註冊:2002-05-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |