2009-07-11 20 views
16

Ich habe zwei Desktop-Anwendungen. Nach dem Schließen der ersten Anwendung startet die erste Anwendung die zweite Anwendung.Wie starte ich eine Anwendung in C#?

Wie starte ich die zweite Anwendung nach der ersten Anwendung?

Meine erste Anwendung erstellt einen separaten Desktop.

Antwort

12

Sie können die Prozessklasse von .NET verwenden, um einen Prozess wie andere beschriebene Personen zu starten. Dann ist die Frage, wann man anrufen soll.

In den meisten Fällen scheint die Verwendung entweder Form.Closing oder Form.Closed Ereignis eine einfache Wahl zu sein.

Wenn jedoch jemand anderes das Ereignis verarbeiten und CancelEventArgs.Cancel auf true setzen kann, ist dies möglicherweise nicht der richtige Ort dafür. Außerdem werden die Ereignisse Form.Closing und Form.Closed nicht ausgelöst, wenn Application.Exit() aufgerufen wird. Ich bin nicht sicher, ob eines der Ereignisse ausgelöst wird, wenn unbehandelte Ausnahmen auftreten. (Sie müssen außerdem entscheiden, ob Sie die zweite Anwendung im Fall von Application.Exit() oder einer nicht behandelten Ausnahme starten möchten).

Wenn Sie wirklich wollen, um sicherzustellen, dass die zweite Anwendung (App2) startet nach der ersten Anwendung (App1) verlassen, können Sie einen Trick spielen kann:

  1. Erstellen Sie eine separate Anwendung (APP0)
  2. APP0 App1 startet
  3. APP0 wartet auf App1 mit Process.WaitExit verlassen()
  4. APP0 startet App2 und verlässt sich

Die unten angehängte Beispiel-Konsolen-App zeigt einen sehr einfachen Fall: Meine Beispiel-App startet zuerst den Editor. Wenn das Notepad dann beendet wird, startet es mspaint und beendet sich selbst.

Wenn Sie die Konsole ausblenden möchten, können Sie einfach die Eigenschaft 'Ausgabeart' von 'Konsolenanwendung' auf 'Windows-Anwendung' unter der Registerkarte 'Anwendung' der Projekteigenschaft festlegen.

Beispielcode:

using System; 
using System.Diagnostics; 

namespace ProcessExitSample 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      try 
      { 

       Process firstProc = new Process(); 
       firstProc.StartInfo.FileName = "notepad.exe"; 
       firstProc.EnableRaisingEvents = true; 

       firstProc.Start(); 

       firstProc.WaitForExit(); 

       //You may want to perform different actions depending on the exit code. 
       Console.WriteLine("First process exited: " + firstProc.ExitCode); 

       Process secondProc = new Process(); 
       secondProc.StartInfo.FileName = "mspaint.exe"; 
       secondProc.Start();     

      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("An error occurred!!!: " + ex.Message); 
       return; 
      } 
     } 
    } 
} 
16

Verwenden Sie die Process class, wenn Sie Ihre erste Anwendung beenden.

var p = new Process(); 
p.StartInfo.FileName = "notepad.exe"; // just for example, you can use yours. 
p.Start(); 
+0

in diesem Fall habe ich an zweiter Stelle beginnen Anwendung, ob Formular schließen oder Formular geschlossen (erste Anwendung) –

+0

Es spielt keine Rolle (es sei denn, Sie schließen das Schließen in 'Schließen'), sin Der ce-Prozess wird asynchron gestartet und verhindert nicht, dass Ihre Anwendung weiterhin das tut, was sie auch tun soll - einschließlich des Herunterfahrens. –

3

Sie könnten nur, um es Shell aus, so dass, wenn Sie im Begriff sind, starten Sie die erste App verlassen nur die zweite App über:

System.Diagnostics.Process.Start(@"PATH\NAME.EXE"); 
0

Einige Beispielcode:

try 
{ 
    stateMainLayout b = new stateMainLayout(); 
b.Location = Screen.AllScreens[1].WorkingArea.Location; 
b.ShowDialog(); 
} 
catch 
{ 
stateMainLayout b = new stateMainLayout(); 
b.ShowDialog(); 
} 
Verwandte Themen