Ejecutar la función cada segundo Visual C #

Tengo problemas con el temporizador. Tengo función en función (dibujar en func)

void func(){

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

 draw(A,B, Pen);

 }

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

Esta es la función de sorteo.

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

Llamo a la función 'func' al hacer clic en el botón

private void button4_Click(object sender, EventArgs e){

    func();

}

Quiero llamar segundo a la función draw (dibujar la línea cada segundo). Entre los dibujos, la función debe continuar trabajando y calcular = bucle, y dibujar la siguiente línea durante algún tiempo (intervalo). Lo intenté con

timer1.Tick += new EventHandler(timer1_Tick);

etc.

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

etc.

Pero todo eso detiene mi función, y dibuja una línea al azar. Solo quiero el tiempo (intervalo) entre dos dibujos en la función 'func'. Sin temporizador funciona bien, pero dibuje todas las líneas inmediatamente, necesito un dibujo lento. Aclamaciones.

Respuestas a la pregunta(4)

Su respuesta a la pregunta