[#35406] RE: win32ole で excel が終了しない — "Oka Yasushi" <oka@...>

こんにちは、岡といいます。

20 messages 2002/06/19
[#35407] Re: win32ole で excel が終了しない — Takashi Kanai <kanai@...4u.or.jp> 2002/06/19

金井です。

[#35408] Re: win32ole で excel が終了しない — Takashi Kanai <kanai@...4u.or.jp> 2002/06/19

金井です。

[#35412] Re: win32ole で excel が終了しない — "NAKAMURA, Hiroshi" <nakahiro@...> 2002/06/20

なひです。

[#35418] Re: win32ole で excel が終了しない — Takashi Kanai <kanai@...4u.or.jp> 2002/06/20

金井です。

[#35419] Re: win32ole で excel が終了しない — nobu.nakada@... 2002/06/21

なかだです。

[#35480] Re: 1.7 系を使っていますが、5月頃は式展開内のコメントが使えていましたが、今は使えなくなっていますね。 — "井上 浩一" <kyoui32@...>

=1B$B0f>e$G$9!#=1B(B

12 messages 2002/06/28
[#35490] Re: 1.7 系を使っていますが、5月頃は式展開内のコメントが使えていましたが、今は使えなくなっていますね。 — "Inoue" <rubyist@117.ne.jp> 2002/06/28

井上です。

[ruby-list:35429] Re: win32ole で excel が終了しない

From: arton <artonx@...>
Date: 2002-06-23 01:54:16 UTC
List: ruby-list #35429
artonです。

On Sun, 23 Jun 2002 08:04:23 +0900
Masaki Suketa <masaki.suketa@nifty.ne.jp> wrote:

> 助田です。
> 
> GCされるまでReleaseは呼ばれません。
> 明示的にReleaseを呼びたい場合、WIN32OLE.ole_free というのが
> あることはあります。
> ただ、これは、デバッグ用に用意してるだけで、危険なので
> 使うのは推奨してません。
> 
現在のWin32OLEには、参照カウンタの余分な加算はないです。(少なくても
ole_eachとole_invoke、ole_invoke2を見た限り。TypeInfo回りの最新の分は見
てないのでわかりませんが−しかし、仮に余分に加算していても何もしなければ、
ファイナライザでは1減算されるだけなので、状況は現在と変わりませんという
点を踏まえて)
したがって、クラスメソッドにしてある、ole_free、ole_reference_countは無
しにして、メソッドとしてのreleaseを追加したほうが以下の理由から良いよう
に見えます。
1.ole_reference_countはそもそも2重AddRef(QI)の検証用、かつそれ程信頼性
は高くない。
2.ole_freeは、pDispatchの消去をしていない(したがって参照カウンタが0になっ
たポインタを保持しているため、ファイナライザでリリース済みオブジェクトを
呼び出してクラッシュすることがある。というより、明示的なAddRef/QIが存在
しないため、あまり意味が無い。(OLE_RELEASE呼出し後に、pole->pDispatchを
NULLに設定すれば良いけど)
 つまり、既にデバッグ用としてのole_freeは不要なのではないかと。

現在、ファイナライザでは、pDispatchがNULLの場合の処理スキップは実装され
ていますから、インスタンスメソッドとしてreleaseを追加してその中、あるい
はole_freeを生かしてその中で、Release呼出し後にpDispatchをNULLに設定する
方向で良いと思います。
> どのくらい危険かというと、一旦Releaseしたオブジェクトに
> 再度アクセスした場合のことを全然考えてません。
> 再度アクセスした場合、例外を投げるぐらいの仕組みが用意できるか
> どうか考えてみます。
で、pDIspatchがNULLであれば、例外を投げる処理を、各メソッドの
Data_Get_Struct呼び出し直後に追加。
 という方向でどうでしょうか?

-- 
arton <artonx@yahoo.co.jp>

__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/

In This Thread