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

わんくま同盟

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

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


(過去ログ 51 を表示中)
■28365 / )  Re[14]: ガベージコレクションについて
□投稿者/ .SHO (159回)-(2008/11/25(Tue) 12:48:39)
No28362 (nori さん) に返信

> this.Menu = menu;
> この一文でFormから参照される事になるのでGC対象外になります。

なるほど。だから、タイマーなんですね。

> >明示的にGCを起こしたり
> GC.Collect
> です。

こんなの作ってみました↓

using System;
using System.Windows.Forms;

public class form : Form {
  public form() {
    System.Timers.Timer timer1 = new System.Timers.Timer( 120000 );
    timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed1);
    timer1.AutoReset = true;
    timer1.Start();

    System.Timers.Timer timer2 = new System.Timers.Timer( 1000 );
    timer2.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed2);
    timer2.AutoReset = true;
    timer2.Start();
  }

  void timer_Elapsed1( object sender, System.Timers.ElapsedEventArgs e ) {
    Console.WriteLine( DateTime.Now );
  }

  void timer_Elapsed2( object sender, System.Timers.ElapsedEventArgs e ) {
    GC.Collect();
    Console.Write( "*" );
  }

  static void Main() { Application.Run( new form() ); }
}

とりあえず、まだ5分ぐらいですが問題なく動き続けてます。

返信 編集キー/


管理者用

- Child Tree -