2009-02-13 7 views
1

Je souhaite limiter une application à l'exécution d'une seule instance sur une machine. Jusqu'à présent, j'ai ceci:Comment puis-je optimiser une première instance d'une application lorsque je tente d'en démarrer une nouvelle?

Mutex m = new Mutex(true, Name, out IsOwned); 

if (!IsOwned) 
{ 
    string message = "There is already a copy of the application '" + 
     Name + 
     "' running. Please close that application before starting a new one."; 

    MessageBox.Show(message, "Error", 
     MessageBoxButtons.OK, MessageBoxIcon.Information); 

    Environment.Exit(0); 
} 
else 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
} 

Et il sort, mais est-il un moyen de maximiser la première instance avant que celui-ci se ferme?

Répondre

2

Ce n'est pas la manière dont vous souhaitez gérer plusieurs instances de l'application. La pratique acceptée est simplement de passer à l'instance en cours d'exécution de l'application. Cela étant dit, vous pouvez facilement créer une classe qui dérive de WindowsFormsApplicationBase (dans l'espace de noms Microsoft.VisualBasic). Cette réponse indique comment vous le faire, et indiquer que vous voulez une seule instance, ainsi que la façon de traiter ce qui se passe lorsque vous essayez et exécutez une nouvelle instance:

Opening a "known file type" into running instance of custom app - .NET

Questions connexes