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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.66832 の関連記事表示

<< 0 >>
■66832  C#でExcelを扱う際の解放について
□投稿者/ のぶ -(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);
    }
    }
親記事 /過去ログ113より / 関連記事表示
削除チェック/

■66834  Re[1]: C#でExcelを扱う際の解放について
□投稿者/ shu -(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を取得しています。
記事No.66832 のレス /過去ログ113より / 関連記事表示
削除チェック/

■66835  Re[2]: C#でExcelを扱う際の解放について
□投稿者/ のぶ -(2013/05/30(Thu) 11:59:23)
    No66834 (shu さん) に返信

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

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


    > sheets[name]
    > の完全な記述は
    > sheets.Item[name]
    > となりsheetsというオブジェクトのItemプロパティでsheetを取得しています。
    こちらは質問用のメソッドを書く際に省略してしまいました。
    実際にはWorkSheetsオブジェクトの変数で取得し、ReleseComObjectを行っています。
    ご指摘ありがとうございます。
記事No.66832 のレス /過去ログ113より / 関連記事表示
削除チェック/

■66836  Re[2]: C#でExcelを扱う際の解放について
□投稿者/ のぶ -(2013/05/30(Thu) 12:07:23)
    No66834 (shu さん) に返信

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

    色々考えていたら不安になったので上記の意味の確認をさせて下さい。
    私の提示したコードのうち、 sheets[name]として使用しているオブジェクトの解放がされていないよー
    という事でよろしかったでしょうか?
記事No.66832 のレス /過去ログ113より / 関連記事表示
削除チェック/

■66837  Re[3]: C#でExcelを扱う際の解放について
□投稿者/ shu -(2013/05/30(Thu) 12:24:26)
    No66836 (のぶ さん) に返信
    > ■No66834 (shu さん) に返信
    >
    >>sheets[name]
    >>の完全な記述は
    >>sheets.Item[name]
    >>となりsheetsというオブジェクトのItemプロパティでsheetを取得しています。
    >
    > 色々考えていたら不安になったので上記の意味の確認をさせて下さい。
    > 私の提示したコードのうち、 sheets[name]として使用しているオブジェクトの解放がされていないよー
    > という事でよろしかったでしょうか?
    sheetsというプロパティではなくsheetsはオブジェクトなので解放が必要ということです。
    ReleaseComObjectされていれば大丈夫です。
記事No.66832 のレス /過去ログ113より / 関連記事表示
削除チェック/

■66838  Re[4]: C#でExcelを扱う際の解放について
□投稿者/ のぶ -(2013/05/30(Thu) 12:38:29)
    No66837 (shu さん) に返信
    何度もご回答頂きありがとうございます。

    > ReleaseComObjectされていれば大丈夫です。
    安心しました。
    解放漏れがないか確認しながらやっていきたいと思います。
記事No.66832 のレス / END /過去ログ113より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -