Implementación de Timer en C# usando un loop Do-While

El detalle es hacer una máquina de Turing que explica el avance o retroceso de números binarios. A la cadencia de un segundo debo cambiar valores en textbox y mostrar una imagen, mientras oculto otras. En el timer1_tick lo que hace es ejecutar el método moverDato y este a su vez ejecuta el loop trayendo consigo un string que se acumula en un vector ya definido de espacio 6.

El detalle que no comprendo y que no me permite avanzar en el segundo modelo es la animación que tiene una cadencia de un segundo. Hasta ahora he visto tutoriales donde usan decisiones, pero desgraciadamente no encontré nada acerca de hacer animaciones que cada cierto tiempo, dependiendo de lo que indica el while se realice, ya que en un segundo, por ejemplo, lo que me hace el timer es hacer el proceso en un solo segundo. Trato de saber cómo es posible implementar mi método en el timer1 para que realmente a la cadencia de 1 segundo, muestre una imagen e imprima en el richTextBox1 el mensaje solicitado.

private void Button3_Click(object sender, EventArgs e)     {         string bin = "";         Regex cad = new Regex("(1|0){4}");         if (cad.IsMatch(textBox9.Text))         {             bin = textBox9.Text;             textBox3.Text = bin[0].ToString();             textBox4.Text = bin[1].ToString();             textBox5.Text = bin[2].ToString();             textBox6.Text = bin[3].ToString();              richTextBox1.Text += textBox2.Text + textBox3.Text + textBox4.Text + textBox5.Text + textBox6.Text + textBox7.Text + "\n";         }         else         {             MessageBox.Show("Ingrese una expresión válida", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);             textBox9.Clear();         }     }      private void Button1_Click(object sender, EventArgs e)     {         switch (comboBox1.SelectedItem)         {             case "1 Segundo":                 timer1.Interval = 1000;                 break;             case "2 Segundos":                 timer1.Interval = 2000;                 break;             case "3 Segundos":                 timer1.Interval = 3000;                 break;             case "4 Segundos":                 timer1.Interval = 4000;                 break;         }         timer1.Start();     }      private void Timer1_Tick(object sender, EventArgs e)     {         int perro = 0;         string wow = textBox9.Text;         do         {             perro = moverDato("■" + wow + "■");             imagenRight(perro);         }         while (perro != 3);                 }      private string leerVector(string[] u)     {         string perro = "";         for (int i = 0; i < u.Length; i++)         {             perro += u[i];         }         return perro;     }          int numImage = 2;     private int moverDato(string cadena)     {         string[] numero = new string[6];         for (int p = 0; p <= 5; p++)         {             numero[p] = cadena[p].ToString();         }          richTextBox1.Text += leerVector(numero) + "\n";          int estado = 0;         int i = 1;          pictureBox2.Visible = true;         while (estado != 3)         {             //timer1.Start();             switch (numero[i] + "")             {                 case "1":                     if (estado == 0)                     {                         estado = 0;                         numero[i] = "1";                         i++;                         imagenRight(numImage);                         numImage++;                         //MessageBox.Show("1");                     }                     else if (estado == 1)                     {                         estado = 4;                         numero[i] = "0";                         i--;                         imagenRight(numImage);                         numImage--;                         //    MessageBox.Show("8");                      }                     else if (estado == 4)                     {                         estado = 4;                         numero[i] = "0";                         i--;                         imagenRight(numImage);                         numImage--;                         //MessageBox.Show("9");                     }                     else if (estado == 2)                     {                         estado = 2;                         numero[i] = "1";                         i--;                         imagenRight(numImage);                         numImage--;                         // MessageBox.Show("4");                     }                     break;                 case "0":                     if (estado == 0)                     {                         estado = 0;                         numero[i] = "0";                         i++;                         imagenRight(numImage);                         numImage++;                         //  MessageBox.Show("2");                      }                     else if (estado == 1)                     {                         estado = 2;                         numero[i] = "1";                         i--;                        imagenRight(numImage);                         numImage--;                         // MessageBox.Show("4");                      }                     else if (estado == 2)                     {                         estado = 2;                         numero[i] = "0";                         i--;                         imagenRight(numImage);                         numImage--;                         //  MessageBox.Show("6");                      }                     else if (estado == 4)                     {                         estado = 2;                         numero[i] = "1";                         i--;                         imagenRight(numImage);                         numImage--;                         //     MessageBox.Show("10");                      }                     break;                 case "■":                     if (estado == 0)                     {                         estado = 1;                         numero[i] = "■";                         i--;                         imagenRight(numImage);                         numImage--;                         //      MessageBox.Show("3");                      }                     else if (estado == 2)                     {                         estado = 3;                         numero[i] = "■";                         i++;                         imagenRight(numImage);                         numImage++;                         //      MessageBox.Show("7");                      }                     else if(estado == 4)                     {                         estado = 3;                         numero[i] = "1";                         imagenRight(numImage);                          //        MessageBox.Show("11");                         //      timer1.Stop();                      }                     break;                 default:                     timer1.Stop();                     MessageBox.Show("An error ocurred, restart the app");                      break;             }             richTextBox1.Text += leerVector(numero) + "\n";         }          if (estado == 3)         {             timer1.Stop();             MessageBox.Show("Acabaste prro");          }         return numImage;     }      private void SB_Load(object sender, EventArgs e)     {         textBox1.Text = "■";         textBox2.Text = "■";         textBox3.Text = "0";         textBox4.Text = "0";         textBox5.Text = "0";         textBox6.Text = "0";         textBox7.Text = "■";         textBox8.Text = "■";         pictureBox2.Visible = true;     }      public void imagenRight(int img)     {         if(img == 1)         {             pictureBox1.Visible = true;             pictureBox2.Visible = false;             pictureBox3.Visible = false;             pictureBox4.Visible = false;             pictureBox5.Visible = false;             pictureBox6.Visible = false;          }         else if(img==2)         {             pictureBox1.Visible = false;             pictureBox2.Visible = true;             pictureBox3.Visible = false;             pictureBox4.Visible = false;             pictureBox5.Visible = false;             pictureBox6.Visible = false;         }         else if (img == 3)         {             pictureBox1.Visible = false;             pictureBox2.Visible = false;             pictureBox3.Visible = true;             pictureBox4.Visible = false;             pictureBox5.Visible = false;             pictureBox6.Visible = false;         }         else if (img == 4)         {             pictureBox1.Visible = false;             pictureBox2.Visible = false;             pictureBox3.Visible = false;             pictureBox4.Visible = true;             pictureBox5.Visible = false;             pictureBox6.Visible = false;         }         else if (img == 5)         {             pictureBox1.Visible = false;             pictureBox2.Visible = false;             pictureBox3.Visible = false;             pictureBox4.Visible = false;             pictureBox5.Visible = true;             pictureBox6.Visible = false;         }         else if(img==6)         {             pictureBox1.Visible = false;             pictureBox2.Visible = false;             pictureBox3.Visible = false;             pictureBox4.Visible = false;             pictureBox5.Visible = false;             pictureBox6.Visible = true;         }     }