- - PR -
[ASP.NET] GC.Collectの多用
«前のページへ
1|2|3|4
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-27 22:02
大丈夫だと思うけど、一応、補足として書いておきます。
「回収される」ことと、このケースの場合の「Oracleとのセッションがなくなりません」は、別の問題です。 たまたま、oo4o が、回収されるときに Oracle のセッションを切断するように作ってあった、だけのことです。 クラスを作る場合は、そのように作る必要があります、ともいえます。 アプリケーション ドメインがリスタートされることとかを考えると、あまり良い作りではないですね。 認証の設定を変えたら、15秒程度かかる初期起動が1秒未満で終わったりして(Oracle も、Windows 認証がデフォルトですから) スタック トレースって、行番号が出ないんだっけ? 転記したときに消すのはいいけど、どの行で発生したかがわかれば、どれが null なのか、わかるんだけど? セッション オブジェクトが消えないのは、これでしょう→http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32241&forum=7&6 (暗黙の型変換による、多重参照) [ メッセージ編集済み 編集者: Jitta 編集日時 2006-07-27 22:03 ] | ||||||||
|
投稿日時: 2006-07-27 23:19
でしょうね、私もそういうつもりで書いたわけではないです。 ただし、
自分で書いておきながら、この可能性を考えていなかったのは認めます... orz _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-07-27 23:41
どちらも想定していますね。 「ここは絶対 null はあり得ない」という状況なら尚更チェックして例外スローです。そうしないから「オブジェクト参照がオブジェクト インスタンスに設定されていません」という原因の掴みにくい状況になるわけです。
出ないですね。デバッグ情報があるときなのかな?とにかくデバッグビルドしていたら行番号も出ます。 _________________ 囚人のジレンマな日々 | ||||||||
|
投稿日時: 2006-07-28 18:18
みなさん色々とありがとうございます。
Application("OraSession")がNullになったのが原因で今回のエラーにつながった かは未だ不明なのですが、可能性としてはあると思い毎回チェックを入れる処理 を暫定的に入れる事にしました。 デバッグビルドでは行番号は取得できますが、仮にApplication("OraSession")が Nullであると言う事が原因だった場合、“なぜNullになったのか?”という所が 追求できないので、システムのリメイクまで暫定的に上記の方法で回避を試みます。 Global.asaxのApplication_BeginRequestとApplication_Errorに入れようと しています。 (そこでまた同じ事象が発生すればまた別の話になってしまいますが・・・。) 今回の質問で遅延バインディングやMarshal.ReleaseComObjectの意味等が 勉強できました。みなさんありがとうございました。 |
«前のページへ
1|2|3|4