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

わんくま同盟

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

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

■96718 / 3階層)  Disposeメソッドを付けないクラスの開放について
□投稿者/ 774RR (858回)-(2021/01/14(Thu) 16:51:54)
参照型の場合 a=null; を書いてもそこで gc を発生させることができるわけではないし
書かなくても「ソースコードのフロー解析上もう使っていない」と判断されたらいつでも処分されうるし
C++ の RAII に慣れている人が C# に移行するとハマるパターン

多重起動を禁止するのに Mutex で排他するつもりで Program.cs 中の Main() にて

static void Main()
{
    Mutex m = new Mutex(false, "MyOwnName");
    Application.Run(new Form1());
}

みたいに書くと m は Application.Run() の前に処分される可能性すらあるです。
文脈解析上 m は Application.Run() の時点でもう使われていないので。

ということでマネージされているリソースは gc に全部お任せしましょう。
GC.Collect() を自分で呼ぶのも原則禁止(呼ぶべき状況か判断できないときは呼ぶな)

解決済み
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: Disposeメソッドを付けないクラスの開放について /ルーキー →Re[4]: Disposeメソッドを付けないクラスの開放について /ルーキー
 
上記関連ツリー

Disposeメソッドを付けないクラスの開放について / ルーキー (21/01/14(Thu) 13:29) #96711
Re[1]: Disposeメソッドを付けないクラスの開放について / WebSurfer (21/01/14(Thu) 13:55) #96714
Re[1]: Disposeメソッドを付けないクラスの開放について / 774RR (21/01/14(Thu) 13:51) #96713
Re[1]: Disposeメソッドを付けないクラスの開放について / WebSurfer (21/01/14(Thu) 14:47) #96716
  └ Re[2]: Disposeメソッドを付けないクラスの開放について / ルーキー (21/01/14(Thu) 15:01) #96717 解決済み
    └ Disposeメソッドを付けないクラスの開放について / 774RR (21/01/14(Thu) 16:51) #96718 解決済み ←Now
      └ Re[4]: Disposeメソッドを付けないクラスの開放について / ルーキー (21/01/14(Thu) 17:50) #96719 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信