Si no existe el directorio, crearlo no sirve de nada ya que estará vacío y no encontrará imagenes así que es mejor salir del método.
Además repites demasiado código. De entrada yo haría algo así:
Código:
// Obtiene la ruta del exe del programa (guardarlo en variable path)
string path = System.IO.Path.GetDirectoryName(
System.AppDomain.CurrentDomain.BaseDirectory);
List<string> imageExtensions = new List<string>() { ".jpg", ".gif", ".png" };
// Comprueba si el directorio "Media" existe en donde se encuentra el ejecutable previamente obtenido.
string miDirectorio = @path + @"\Media";
// Si existe no hace nada y si no existe crea la carpeta
if (!Directory.Exists(miDirectorio)) return;
// Se realiza una lectura de archivos de imagen de la carpeta Media.
List<string> ficheros = new List<string>();
foreach(string extension in imageExtensions)
{
ficheros.AddRange(Directory.GetFiles(lecturadearchivos, extension));
}
// Se hace el recorrido del arreglo ficheros (jpg).
foreach (string fichero in ficheros)
{
// Y se muestran las imagenes contenidas en dicho arreglo.
pictureBox1.Image = Image.FromFile(fichero);
//Hago una pausa para que puedan ver la imagen
Thread.Sleep(1000);
Application.DoEvents();
}
}
Igualmente yo quizás lo plantearía diferente. Al arrancar construyes el array con las imagenes. Y con un timer vas recorriendo la lista de imágenes, una en cada "tick". Así no haces un Thread.Sleep y no bloqueas al thread.