C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: C#でExcelを扱う際の解放について


(過去ログ 113 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■66832 / inTopicNo.1)  C#でExcelを扱う際の解放について
  
□投稿者/ のぶ (25回)-(2013/05/30(Thu) 10:09:37)

分類:[C#] 

いつもお世話になっています。
C#でExcelを扱う際の解放について確認したく思うのでよろしくお願いします。

例えば以下の様なコードの場合、★のsheetの参照が残ってしまうのではないかと思っています。
このような場合は別の変数に代入し、それぞれ解放処理をした方が安全なのでしょうか?

それと、解放漏れを確認する方法は参照カウントを取得するしかないのでしょうか?


public void Hoge(string name)
{
  Excel.Worksheet sheet = null;
  try
  {
    sheet = sheets[name]; // ★
    // シートに対する処理

    sheet = sheets["piyo"]; // ■
    // シートに対する処理
  }
  finally
  {
    ReleaseObj(ref sheet);
  }
}

引用返信 編集キー/
■66834 / inTopicNo.2)  Re[1]: C#でExcelを扱う際の解放について
□投稿者/ shu (328回)-(2013/05/30(Thu) 11:50:33)
2013/05/30(Thu) 11:51:48 編集(投稿者)

No66832 (のぶ さん) に返信
> いつもお世話になっています。
> C#でExcelを扱う際の解放について確認したく思うのでよろしくお願いします。
>
> 例えば以下の様なコードの場合、★のsheetの参照が残ってしまうのではないかと思っています。
> このような場合は別の変数に代入し、それぞれ解放処理をした方が安全なのでしょうか?
>
> それと、解放漏れを確認する方法は参照カウントを取得するしかないのでしょうか?
>
sheetを別変数にするか代入する前に前の物を解放する必要があります。
またsheetsを変数に取得して解放することが必要です。

sheets[name]
の完全な記述は
sheets.Item[name]
となりsheetsというオブジェクトのItemプロパティでsheetを取得しています。
引用返信 編集キー/
■66835 / inTopicNo.3)  Re[2]: C#でExcelを扱う際の解放について
□投稿者/ のぶ (26回)-(2013/05/30(Thu) 11:59:23)
No66834 (shu さん) に返信

ご回答ありがとうございます。

> sheetを別変数にするか代入する前に前の物を解放する必要があります。
> またsheetsを変数に取得して解放することが必要です。
別変数の方が(私的に)分かりやすいので、そのようにしたいと思います。


> sheets[name]
> の完全な記述は
> sheets.Item[name]
> となりsheetsというオブジェクトのItemプロパティでsheetを取得しています。
こちらは質問用のメソッドを書く際に省略してしまいました。
実際にはWorkSheetsオブジェクトの変数で取得し、ReleseComObjectを行っています。
ご指摘ありがとうございます。
引用返信 編集キー/
■66836 / inTopicNo.4)  Re[2]: C#でExcelを扱う際の解放について
□投稿者/ のぶ (27回)-(2013/05/30(Thu) 12:07:23)
No66834 (shu さん) に返信

> sheets[name]
> の完全な記述は
> sheets.Item[name]
> となりsheetsというオブジェクトのItemプロパティでsheetを取得しています。

色々考えていたら不安になったので上記の意味の確認をさせて下さい。
私の提示したコードのうち、 sheets[name]として使用しているオブジェクトの解放がされていないよー
という事でよろしかったでしょうか?
引用返信 編集キー/
■66837 / inTopicNo.5)  Re[3]: C#でExcelを扱う際の解放について
□投稿者/ shu (329回)-(2013/05/30(Thu) 12:24:26)
No66836 (のぶ さん) に返信
> ■No66834 (shu さん) に返信
>
>>sheets[name]
>>の完全な記述は
>>sheets.Item[name]
>>となりsheetsというオブジェクトのItemプロパティでsheetを取得しています。
>
> 色々考えていたら不安になったので上記の意味の確認をさせて下さい。
> 私の提示したコードのうち、 sheets[name]として使用しているオブジェクトの解放がされていないよー
> という事でよろしかったでしょうか?
sheetsというプロパティではなくsheetsはオブジェクトなので解放が必要ということです。
ReleaseComObjectされていれば大丈夫です。
引用返信 編集キー/
■66838 / inTopicNo.6)  Re[4]: C#でExcelを扱う際の解放について
□投稿者/ のぶ (28回)-(2013/05/30(Thu) 12:38:29)
No66837 (shu さん) に返信
何度もご回答頂きありがとうございます。

> ReleaseComObjectされていれば大丈夫です。
安心しました。
解放漏れがないか確認しながらやっていきたいと思います。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -