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

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

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

Re[3]: TaskやFormはいつ廃棄対象になる?


(過去ログ 112 を表示中)

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

■66238 / inTopicNo.1)  TaskやFormはいつ廃棄対象になる?
  
□投稿者/ fullhappy (1回)-(2013/04/10(Wed) 16:39:22)

分類:[C#] 

c#4.0です。

TaskやFormをnewして変数に代入しない場合
参照がなくても廃棄対象にならないのでしょうか?
ならないとしたら、いつなるのでしょうか?

private void button1_Click(object sender, EventArgs e)
{
    new Form1().Show();
    new Task(Exec1).Start();
}

上記のFormやTaskは参照している変数がないので
すぐに廃棄対象になり、もし、ガベレージコレクションが
動いたらフォーム,タスクが停止されますか?

よろしくお願いします。

引用返信 編集キー/
■66241 / inTopicNo.2)  Re[1]: TaskやFormはいつ廃棄対象になる?
□投稿者/ pang2 (18回)-(2013/04/10(Wed) 17:59:56)
FormはShowするとGCの対象外になり、ユーザーが閉じるとGCの対象になりますね。
.NETが面倒みてくれている。

WeakReference w;

private void button1_Click(object sender, EventArgs e)
{
Form f = new Form2();
w = new WeakReference(f);
f.Show();
}

private void button2_Click(object sender, EventArgs e)
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
MessageBox.Show("IsAlive=" + w.IsAlive);
}



【C#】モードレス画面のGC管理について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28778&forum=7

最後の回答参照
引用返信 編集キー/
■66244 / inTopicNo.3)  Re[2]: TaskやFormはいつ廃棄対象になる?
□投稿者/ fullhappy (3回)-(2013/04/10(Wed) 21:33:27)
pang2さん、ありがとうございます。

要は
参照がなくても自動で仕事しているインスタンスは
仕事が終わるまで清掃車に乗せられないように
うまくやってるって事ですね。

そのようなクラスがどれかわかりませんが
Taskもそうであるような気がします。
そうでなければ、いろんな人が困っている筈。

解決済とします。
解決済み
引用返信 編集キー/
■66245 / inTopicNo.4)  Re[3]: TaskやFormはいつ廃棄対象になる?
□投稿者/ Azulean (129回)-(2013/04/10(Wed) 21:38:40)
参考情報ですが、Form は Show されるタイミングで Application クラスに自身のインスタンスを登録します。
Application クラスは静的クラスなので、インスタンスの登録解除がされるまで、参照が消滅することはないということになります。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -