private void Form1_Load(object sender, EventArgs e)
        {
            Task task = new Task(() => { this.start(); });
            task.Start();
            
        }
        private void start()
        {
           
            MessageBox.Show("111");
            timer1.Start();
        }我是想用线程启动一个Timer定时器,但是发现这样Timer没法启动,而messagebox却可以弹出。而把            Task task = new Task(() => { this.start(); });
            task.Start();这两句话放到timer1_Tick事件里面则可以....求解

解决方案 »

  1.   


        private void Form1_Load(object sender, EventArgs e)
        {
          Task task = new Task(() => { this.start(); });
          task.Start();
        }    private void start()
        {
          MessageBox.Show("111");
          //timer1.Enabled = true;
          TimerStart(true);
        }    private delegate void del_TimerStart(bool b);    private void TimerStart(bool isstart)
        {
          if (this.InvokeRequired)
          {
            del_TimerStart d = new del_TimerStart(TimerStart);
            this.Invoke(d, isstart);
          }
          else
          {
            timer1.Enabled = false;
          }
        }    private void timer1_Tick(object sender, EventArgs e)
        {
          TimerStart(false);
          MessageBox.Show("222");
        }
      

  2.   


       private void Form1_Load(object sender, EventArgs e)
        {
          Task task = new Task(() => { this.start(); });
          task.Start();
        }    private void start()
        {
          MessageBox.Show("111");
          //timer1.Enabled = true;
          TimerStart(true);
        }    private delegate void del_TimerStart(bool b);    private void TimerStart(bool isstart)
        {
          if (this.InvokeRequired)
          {
            del_TimerStart d = new del_TimerStart(TimerStart);
            this.Invoke(d, isstart);
          }
          else
          {
            timer1.Enabled = isstart;  //false 改isstart
          }
        }    private void timer1_Tick(object sender, EventArgs e)
        {
          TimerStart(false);
          MessageBox.Show("222");
        }
      

  3.   

    可能form_load时你的定时器还未定义吧
      

  4.   

    Thread= new Thread(startByTime);
      

  5.   

    这个是不是可以直接代替timer.Tick事件?