Control de temporizador WindowForm

Componente del temporizador Tiempo del intervalo del temporizador del temporizador: cada intervalo activará un evento

い ち System.Windows.Forms.Timer La
aplicación de Windows ocupa un hilo para modificar los elementos de la IU, según el
atributo de la IU intervalo de tiempo intervalo ms 1000ms = 1s
evento tick
aplicación: visualización de tiempo dinámico
Si es una aplicación de Windows, utilice la función de temporizador System. Windows.Forms.Timer es la primera opción.

//每隔指定的时间间隔就会触发
  private void timer1_Tick(object sender, EventArgs e)
   {
    
    
       lblDateTime.Text = DateTime.Now.ToString();
   }

   private void FrmTimer_Load(object sender, EventArgs e)
   {
    
    
       lblDateTime.Text = DateTime.Now.ToString();
       timer1.Enabled = true;	//启动计时器
   }

Si el tiempo de ejecución único excede el tiempo de intervalo, afectará al siguiente disparador. La precisión es pobre.
········································································································································································································································································································ ········································································································································································································································································································ ········································································································································································································································································································ ········································································································································································································································································································ ········································································································································································································································································································ · · · · · · · · · · · ······································································································································································································································································ ···
System.Timers.Timer
basado en el servicio El temporizador es liviano y el
evento Transcurrido se activa en un intervalo de tiempo, la operación se realiza, no se ejecuta por el subproceso de la interfaz de usuario


Intervalo de propiedad Intervalo de tiempo
AutoReset falso se detendrá cuando se active una vez que sea verdadero. De forma predeterminada , el elemento de la interfaz de usuario
no se puede modificar directamente . Se
puede hacer a través de invoke () del elemento de la interfaz de usuario, y el elemento de la interfaz de usuario se modifica en el delegado: - modificar el elemento de la interfaz de usuario

private void FrmTimer_Load(object sender, EventArgs e)
  {
    
    
      System.Timers.Timer timer3 = new System.Timers.Timer();
      timer3.Interval = 1000;
      //timer3.AutoReset = false;		//只会引发一次,就停止了
      timer3.Elapsed += Timer3_Elapsed; //事件
      timer3.Start(); 					//开启计时器
  }
  int count = 0; //触发次数的终点
  private void Timer3_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
  {
    
    
	  //不能直接修改UI元素的内容
      //lblDt2.Text= DateTime.Now.ToString();
      count += 1;
	  //用委托来进行修改元素内容
      Action act = UpdateTime;
      this.Invoke(act);
      if(count >10)
      {
    
    
          System.Timers.Timer timer = (System.Timers.Timer)sender;
          timer.Stop();			//停止计时器
      }
  }
//委托方法
  private void UpdateTime()
  {
    
    
      lblDatatime.Text = DateTime.Now.ToString();
  }

Operación que requiere mucho tiempo, no hará que la interfaz de usuario deje de responder, no afectará al siguiente disparador

さ ん System.Threading.Timer
El temporizador de subprocesos múltiples es liviano y de alta precisión

Proporciona un mecanismo para ejecutar métodos en subprocesos del grupo de subprocesos en intervalos de tiempo especificados.
Una sola ejecución es demasiado larga y no afectará al siguiente activador . El método de devolución de llamada realiza la operación

//System.Threading.Timer timer4;     
 private void FrmTimer_Load(object sender, EventArgs e)
  {
    
    
      //多线程
      //period  时间间隔  0或-1 只会执行一 次,然后就停止
      //Change 可以让计时器重新启动
      //停止 ①period  0 -1   ②timer4.Dispose() 
      int count2 = 0;
      timer4 = new System.Threading.Timer(new System.Threading.TimerCallback(o => {
    
    
          count2 += 2;
          Action<int> act = ShowCount;
          this.Invoke(act, count2);
      }), null, 1000,1000);
	//参数 回调函数,执行对象,延迟启动时间,触发时间间隔
   //timer4.Change(2000, 2000);	//改变延迟启动时间和时间间隔
  }
//委托函数
  private void ShowCount(int cout)
  {
    
    
      txtCount.Text = cout.ToString();
      if (cout > 50)
          timer4.Dispose();
  }

No es posible modificar los elementos de la interfaz de usuario directamente, ni se implementa mediante la invocación () del elemento de la interfaz de usuario que se ejecuta en el subproceso de la interfaz de usuario

Supongo que te gusta

Origin blog.csdn.net/asdasd1fdsyrt/article/details/109477081
Recomendado
Clasificación