每秒运行一次函数 Visual C#

本文关键字:一次 函数 Visual 运行 | 更新日期: 2023-09-27 18:36: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();
}

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

timer1.Tick += new EventHandler(timer1_Tick);

等。。

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

等。。

但所有这些都停止了我的函数,并绘制一条随机线。我只想要函数"func"中两个绘图之间的时间(间隔)。没有计时器工作正常,但立即绘制所有线条,我需要慢速绘制。干杯。

每秒运行一次函数 Visual C#

我不完全清楚您要做什么,但是,通常,您可以使用 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
}

试试这个

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);
}

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

现在解决了

System.Threading.Thread.Sleep(700);