2010-11-23 5 views

Répondre

4

Si vous vous demandez comment lancer le processus en arrière-plan (de sorte que votre interface utilisateur ne gèle pas), vous pouvez écrire

ThreadPool.QueueUserWorkItem(delegate { Process.Start("notepad.exe"); }); 

Si vous demandez d'exécuter le processus dans l'espace de votre processus, c'est tout à fait impossible pour les programmes arbitraires et une très mauvaise idée pour les programmes gérés.

0

http://msdn.microsoft.com/en-us/library/e8zac0ca(v=VS.90).aspx

droit sur MSDN Documentation

 Process myProcess = new Process(); 

     try 
     { 
      myProcess.StartInfo.UseShellExecute = false; 
      // You can start any process, HelloWorld is a do-nothing example. 
      myProcess.StartInfo.FileName = "C:\\HelloWorld.exe"; 
      myProcess.StartInfo.CreateNoWindow = true; 
      myProcess.Start(); 
      // This code assumes the process you are starting will terminate itself. 
      // Given that is is started without a window so you cannot terminate it 
      // on the desktop, it must terminate itself or you can do it programmatically 
      // from this application using the Kill method. 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine(e.Message); 
     } 

Est-ce que vous voulez dire?

+0

Je soupçonne (j'espère?) Pas. – SLaks

1

Par nature, un exécutable doit s'exécuter dans son propre processus. Vous pouvez cependant lancer une méthode à partir d'un autre thread dans un exécutable car il ne s'agit que d'un assemblage.

Les threads partagent l'espace d'adressage du processus qui l'a créé. les processus ont leur propre adresse.

Pour ce faire, vous devez définir l'exe référencé friend assembly. Voir here. Ou utiliser remoting.

3

Si vous démarrez un autre exécutable à partir d'un autre thread, vous démarrerez un nouveau processus. Je pense que vous confondez quelque peu la relation entre les threads, les processus et les exécutables.

Questions connexes