Ich schreibe oft .net-Anwendungen, die nur eine Instanz unterstützen. Früher habe ich .net-remoting und jetzt WCF verwendet, um zu erkennen, ob bereits eine Instanz meiner App läuft und dieser Instanz den Fokus gibt.
Meine Frage ist, ob es mit .net4 eine bessere Lösung gibt, um Single-Instance-Anwendungen zu erreichen (oder gibt es im Allgemeinen eine bessere Lösung, weil das Laden der WCF- oder Remoting-Assembly zu Beginn der Anwendung schlecht ist) Leistungseinfluss)
Aktualisieren
Danke für den ganzen Beitrag. Die Antwort auf meine anfängliche Frage scheint zu sein " nein, es gibt nichts Neues, um Einzelinstanzanwendungen innerhalb von .net 4 zu erreichen.
Dank all der zusätzlichen Informationen werde ich meine aktuellen Projekte ändern, um einen Mutex zu verwenden, um die gewünschte Funktionalität bereitzustellen. Ich habe die Antwort von Bob Moore angenommen, weil er die meisten Informationen enthält, aber danke an alle, die nützliche Informationen gepostet haben.
Der traditionelle Weg dazu ist ein Mutex, z. B.
%Vor%Bearbeiten:
Ich habe diesen Code gefunden, um SetForegroundWindow online aufzurufen, damit Sie die andere Instanz Ihrer App finden und nach vorne bringen können:
%Vor%Beachten Sie, dass Sie in modernen Windows-Implementierungen nur den Vordergrund weggeben können.
Ich benutze ein Mutex und FindWindow , um dies zu tun.
Was Ihren Kommentar zu einer anderen Antwort betrifft:
Informationen zu lokalen und globalen Mutexe in Terminaldienste folgen Sie diesem Link .
Terminaldienste-Clientprozesse kann Objektnamen mit einem "Global" verwenden oder "Lokales" Präfix explizit Erzeuge ein Objekt im globalen oder Sitzungsnamensraum.
Dies ist der Code, mit dem ich das Fenster aktiviere:
%Vor%Tags und Links .net