Ahi va el codigo espero me pueda ayudar 
private void button1_Click(object sender, EventArgs e)//REPRODUCIR
 {
              int i = 0;
                do
                {
                    ejecutarHilos();
                    i++;
                } while (hilo.IsAlive == false && i < numPasos - 1); //num pasos es el numero movimientos
}
public void ejecutarHilos(){
               int c = 0;
                           
                while (numHilos > c)  // numHilos es el numero de jugadores que se mueven al mismo tiempo osea los hilos
                {                   
                    hilo = new Thread(Sumar);
                    hilo.IsBackground = true;
                    Thread.Sleep(100); //Para que no salgan dos jugadores juntos
                    hilo.Start();
                    hilo.Join();
                    c++;
                }
}
 private void Sumar() {
                ArrayList AL = new ArrayList();
                JugadoreRojo JR;
                JugadoreVerde JV;
                Pelota Pp;
                String nom = "";
                String xx = "";
                String yy = "";
                int pp = 0;
                Object o;
                o = ListaPosiciones[contador];
                if (o is JugadoreVerde)
                {
                    JV = (JugadoreVerde)o;
                    nom = Convert.ToString(JV.indice);
                    xx = Convert.ToString(JV.ubicacion.X);
                    yy = Convert.ToString(JV.ubicacion.Y);
                    pp = JV.paso;
                    contador++;
                    //ob=(Object)JV;                
                }
                if (o is JugadoreRojo)
                {
                    JR = (JugadoreRojo)o;
                    nom = Convert.ToString(JR.indice);
                    xx = Convert.ToString(JR.ubicacion.X);
                    yy = Convert.ToString(JR.ubicacion.Y);
                    pp = JR.paso;
                    contador++;
                }
                if (o is Pelota)
                {
                    Pp = (Pelota)o;
                    nom = Convert.ToString(Pp.indice);
                    xx = Convert.ToString(Pp.ubicacion.X);
                    yy = Convert.ToString(Pp.ubicacion.Y);
                    pp = Pp.paso;
                    contador++;
                }
                MyDelegado MD = new MyDelegado(Mostrar);
                IAsyncResult resultado = MD.BeginInvoke(nom, xx, yy, pp, null, null);
                MD.EndInvoke(resultado);
            //Esto me permitesaber que jugador exactamente es o si es la pelota
       }
public void mostrar(String n, String xx, String yy, int pp)){
//Donde n es el nombre del controlque representa al jugador, xx y yy son el punto al que debe llegar,pp es la posicion actual  
 // Esto es solo una parte del codigo que hace el movimiento 
              
                Point punto = new Point(Convert.ToInt32(xx), Convert.ToInt32(yy));
                Mutex mutex = new Mutex();
                          int V = 0;
                          int V2 = 30;
                          pun = JR.Location;
                          int D = Convert.ToInt32(Math.Sqrt(Math.Pow(punto.X - pun.X, 2) + Math.Pow(punto.Y - pun.Y, 2)));
                          V = D / 30;
                if (punto.X < pun.X && punto.Y > pun.Y)
                        {
                            mutex.WaitOne();
                         double  m = (punto.Y - pun.Y) /(double)( punto.X - pun.X);
                            int x = pun.X - 1;
                            
                            while (x >= punto.X )
                            {
                                int y = (int)Math.Round(m*(x - punto.X)+punto.Y,0);
                                JR.Location = new Point(x,y);// JR es un jugador 
                                pictureBox1.Refresh();
                                Thread.Sleep(V2 - V);
                                x = x-1;
                            }
                            hilo.Abort();
                            mutex.ReleaseMutex();
                        }
        
}