none
HandleRefについて RRS feed

  • 質問

  • よくこんなコードを見かけます。

    UnsafeNativeMethods.SendMessage(new HandleRef(this, this.Handle), XXX, Y, Z);
    UnsafeNativeMethods.GetWindowRect(new HandleRef(this, this.Handle), ref rect);

    どうしてわざわざHandleRefを使う意味があるのですか?
    このP/Invoke呼び出しの間にthisがGCされるわけでもありませんよね?

    よろしくお願いします。
    2009年12月15日 3:22

回答

すべての返信

  • 次のブログの記事が興味深いのではないかと思います。

     this の寿命 - NyaRuRuの日記
     http://d.hatena.ne.jp/NyaRuRu/20060626/p4
    • 回答の候補に設定 Jitta 2009年12月16日 5:04
    • 回答としてマーク 高橋 春樹 2010年1月6日 8:46
    2009年12月15日 4:25
  • なるほど。
    P/Invokeの呼び出しの後で、thisを使わない場合は、回収される可能性はあるわけですね。
    実際には、参照がなくなってしまう状態で呼び出すことがないからバグらないのかな。


    この記事も合わせて読んだ方がいいですね。

    変数スコープの最後までオブジェクトは生きているという誤解 - NyaRuRuの日記
    http://d.hatena.ne.jp/NyaRuRu/20081002/p1

    ありがとうございました。

    • 回答の候補に設定 Jitta 2009年12月16日 5:04
    • 回答としてマーク 高橋 春樹 2010年1月6日 8:47
    2009年12月15日 4:56
  • フォーラムオペレーターの高橋春樹です。

    totojoさん、いつもお世話になっております。
    関連サイトのご紹介有難うございました。

    データくんさん、初めまして。
    MSDNフォーラムのご利用有難うございます。
    今回、totojoさんからの投稿が、フォーラムを閲覧している人にとって、有用な情報だと思いましたので、
    勝手ながら、totojoさんの投稿に、回答マークを付けさせてもらいました。

    次回からで良いのですが、問題が解決した場合、
    参考になった投稿に回答マークを付けて頂きたいと思います。

    今後ともMSDNフォーラムをよろしくお願いします(^_^)


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年1月6日 8:46