In breve:
Ho un programma Winform (ma anche se fosse una Console Application sarebbe la stessa cosa).
Faccio il load di un assembly.
Individuo un tipo. Il tipo che individuo è la classe Program.
Invoco il metodo Main(string[] args).
Il metodo statico Main(string[] args) finisce con un Application.Run(istanza di un FormPippo).

Quando quindi dal mio programma faccio queste operazioni, la form FormPippo appare ma il controllo viene trasferito appunto a questo programma. Cioè non posso fare altre azioni sul mio programma perchè la console è come se non fosse attiva..
Qualcuno ha una soluzione a questo problema?
Vi faccio vedere il codice che utilizzo tenendo presente che il programma che richiama carica l'assembly e invoca il metodo main è una console application:

codice:
 static void Main(string[] args)
        {
            Assembly assembly = Assembly.LoadFile(@"C:\Eseguibile.exe");
            Type t = assembly.GetType("Eseguibile.Program");

            object[] p = new object[] { new string[] { } };
            RunStaticMethod(t, "Main", p);
            Console.WriteLine("Pippo");
            Console.ReadLine();

        }



 public static object RunStaticMethod(System.Type t, string strMethod,
object[] aobjParams)
        {
            BindingFlags eFlags =
             BindingFlags.Static | BindingFlags.Public |
             BindingFlags.NonPublic;
            return RunMethod(t, strMethod,
             null, aobjParams, eFlags);
        }

        private static object RunMethod(System.Type t, string
 strMethod, object objInstance, object[] aobjParams, BindingFlags eFlags)
        {
            MethodInfo m;
            try
            {
                m = t.GetMethod(strMethod, eFlags);
                if (m == null)
                {
                    throw new ArgumentException("Non esiste un metodo'" +
                     strMethod + "' per il tipo '" + t.ToString() + "'.");
                }

                //Appena viene richiamata questa riga l'applicazione parte ma il controllo si trasferisce su questa applicazione. In debug ad esempio non riesco ad andare oltre questa riga..
                object objRet = m.Invoke(objInstance, aobjParams);
                

                return null;
            }
            catch
            {
                throw;
            }
        }