【问题标题】:Run function every second Visual C#每秒运行一次函数 Visual C#
【发布时间】:2022-01-14 01:22:40
【问题描述】:

我的计时器有问题。 我在函数中有函数(在函数中绘制)

void func(){

 /*...do something ... */
for(){
   for() {
  /*loop*/

 draw(A,B, Pen);

 }

/*... do something ...*/
  }
}

这是绘图功能

   public void draw1(Point Poc, Point Kra, Pen o) {
      Graphics g = this.CreateGraphics();
      g.DrawLine(o,Poc.X+4, Poc.Y+4,Kra.X+4, Kra.Y+4);
      g.Dispose();
      }

我在按钮点击时调用函数'func'

private void button4_Click(object sender, EventArgs e){

    func();

}

我想每秒钟调用一次绘图函数(每秒画一条线)。 在绘图之间,函数需要继续工作并计算=循环,并绘制下一行一段时间(间隔)。我试过了

timer1.Tick += new EventHandler(timer1_Tick);

等等。

private void timer1_Tick(object sender, EventArgs e)
    {
        ...
        draw(A, B, Pen)
    }

等等。

但这一切都会停止我的功能,并随机画一条线。 我只想要函数'func'中两个绘图之间的时间(间隔)。没有计时器可以正常工作,但立即绘制所有线条,我需要缓慢绘制。 干杯。

【问题讨论】:

  • 你的计时器滴答方法应该有draw(A,B, Pen);而不是draw1()
  • 定时器开启了吗?还要在函数 Draw1() 中添加参数
  • 参数没问题。定时器已启用。

标签: c# timer draw


【解决方案1】:

我不是完全清楚你要做什么,但一般来说,你可以使用 Timer 类的对象来指定代码在指定的时间间隔内执行。代码看起来像这样:

Timer myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(DisplayTimeEvent);
myTimer.Interval = 1000; // 1000 ms is one second
myTimer.Start();

public static void DisplayTimeEvent(object source, ElapsedEventArgs e)
{
    // code here will run every second
}

【讨论】:

    【解决方案2】:

    您不会在 WinForms 应用程序中绘图,而是响应更新或绘制消息。在表单的Paint 事件中执行您想要执行的操作(或覆盖OnPaint 方法)。如果要重新绘制表单,请使用Form.Invalidate。例如在计时器滴答声中调用Form.Invalidate...

    【讨论】:

      【解决方案3】:

      试试这个

      var aTimer = new System.Timers.Timer(1000);
      
      aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
      
      aTimer.Interval = 1000;
      aTimer.Enabled = true;       
      
      //if your code is not registers timer globally then uncomment following code
      
      //GC.KeepAlive(aTimer);
      
      
      
      private void OnTimedEvent(object source, ElapsedEventArgs e)
      {
          draw(A, B, Pen);
      }
      

      【讨论】:

        【解决方案4】:

        暂时解决

        System.Threading.Thread.Sleep(700);
        

        【讨论】:

          猜你喜欢
          • 2012-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-09
          • 2020-07-15
          • 2018-11-18
          相关资源
          最近更新 更多