3

プログラムを開いてから 10 秒後に関数を実行するにはどうすればよいですか。

これは私が試したものであり、機能させることができません。

private void button1_Click(object sender, EventArgs e)
{
    Timer tm = new Timer();
    tm.Enabled = true;
    tm.Interval = 60000;
    tm.Tick+=new EventHandler(tm_Tick);
}
private void tm_Tick(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    frm.Show();
    this.Hide();
}
4

2 に答える 2

14

いくつかの問題があります。

  1. Loadボタン クリック ハンドラではなく、イベントを使用する必要があります。
  2. 間隔を1000010 秒間待機するように設定する必要があります。
  3. タイマー インスタンスにローカル変数を使用しています。これにより、後でタイマーを参照することが難しくなります。代わりに、タイマー インスタンスをフォーム クラスのメンバーにします。
  4. フォームを実行した後は時計を停止することを忘れないでください。そうしないと、10 秒ごとに開こうとします。

つまり、次のようなものです。

private Timer tm;

private void Form1_Load(object sender, EventArgs e)
{
    tm = new Timer();
    tm.Interval = 10 * 1000; // 10 seconds
    tm.Tick += new EventHandler(tm_Tick);
    tm.Start();
}

private void tm_Tick(object sender, EventArgs e)
{
    tm.Stop(); // so that we only fire the timer message once

    Form2 frm = new Form2();
    frm.Show();
    this.Hide();
}
于 2012-05-19T13:22:19.710 に答える
0

そのようなあなたのプログラムにとって良いことになるでしょうか?

namespace Timer10Sec
{
    class Program
    {
        static void Main(string[] args)
        {
            Thread t = new Thread(new ThreadStart(After10Sec));
            t.Start();
        }

        public static void After10Sec()
        {
            Thread.Sleep(10000);
            while (true)
            {
                Console.WriteLine("qwerty");
            }
        }
    }
}
于 2012-05-19T13:26:54.133 に答える