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. 您应该将间隔设置10000为等待 10 秒。
  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 回答