2010-11-23 4 views

Antwort

4

Wenn Sie sich fragen, wie man den Prozess im Hintergrund starten (so dass Ihre UI nicht gefriert), Sie

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

Wenn Sie sich fragen, schreiben kann, den Prozess auszuführen Innerhalb Ihres Prozessraums ist das für beliebige Programme absolut unmöglich und für verwaltete Programme eine sehr schlechte Idee.

0

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

Gerade aus MSDN-Dokumentation

 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); 
     } 

Ist das, was Sie meinen?

+0

Ich vermute (hoffe?) Nicht. – SLaks

1

Von Natur aus muss eine ausführbare Datei in ihrem eigenen Prozess ausgeführt werden. Sie können jedoch eine Methode aus einem anderen Thread in einer ausführbaren Datei starten, da sie selbst nur eine Assembly ist.

Threads teilen sich den Adressraum des Prozesses, der sie erstellt hat; Prozesse haben ihre eigene Adresse.

Um dies zu tun, müssen Sie die referenzierte Exe eine friend assembly machen. Siehe here.

Oder verwenden Sie remoting.

3

Wenn Sie eine andere ausführbare Datei von einem anderen Thread starten, starten Sie einen neuen Prozess. Ich denke, Sie verwechseln die Beziehung zwischen Threads, Prozessen und ausführbaren Dateien etwas.

Verwandte Themen