- - PR -
ASP.NETで動作ディレクトリを変えるとEXCELが終了しない
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-12-01 16:50
これは、どういうことでしょうか。共通関数化していないけれども、共通で使う関数があり、それをプロジェクト参照で呼び出していた、ということでしょうか。 そうであるなら、Marshal.ReleaseComObjectで「何をしようとしているか」を理解してください。これらはオブジェクトそのものをリリースするのではなく、オブジェクトに対する参照カウンタを減らします。COMオブジェクトは、参照されている限り(参照カウンタが1以上である限り)リリースの対象となりません。全ての参照が外れるようになっているか、確認してください。 | ||||
|
投稿日時: 2003-12-01 17:29
どうも頭の中がテンパってるのか、
説明が不十分なようで申し訳ないです。 「共通関数化していないけれども、共通で使う関数」と言うわけではなく、 エクセルを扱うけども、共通化出来ない個別の処理と言うことです。 で、その関数をコピーして個別の処理部分を排除して、 今回必要な処理を組み込んで行っています。 スケルトンに、と言うのはエクセルのオブジェクト一式を用意してから開放するまでの処理のみをそのまま流用すると言う意味です。 で、プロセスが残ってしまうソースと正しく破棄されるソースとをWinDiffでチェックして見たのですが、 全く違いが見つかりませんでしたので、 未だに原因不明です。 ちょっと仕事が押してきちゃってますので、とりあえず完成させたら引き続き原因を調査しようと思ってます。 ファイルの保存で参照が残っていたので、 何らかのタイミングで何かをつかんだままの状態が発生して 参照が外れなかったとは思うのですが・・・ | ||||
|
投稿日時: 2003-12-01 21:30
またもや落ちなくなってしまいました。
状況ですが、 再びプロセスが殺せなくなったので、 処理をスケルトンに加えている途中でプロセスが死んでいたところまでコメントアウトで再現したのにもかかわらず、 プロセスが死ななくなっていました。 で、プロセスの死ななくなった関数をコピーしてもうひとつ用意してそちらを呼び出して見ると、 何故かプロセスが殺せました。 ソースは全く同じです。 以下は呼び出し元です。
newCreateXlsImg関数をコピーして、 違いは関数名をnewCreateXlsImg2に変えただけです。 |