In VB .NET gibt es eine IsSingleInstance Boolesche Eigenschaft das macht den Job für dich.
In VB (aus hier ):
%Vor%So verwenden Sie es in C # (aus hier ):
%Vor%Stellen Sie sicher, dass Sie in Ihrem Projekt auf die Microsoft.VisualBasic.dll verweisen.
Öffnen Sie Ihre Projekteigenschaften (Registerkarte "Anwendung"), und aktivieren Sie die Option Einzelinstanzanwendung erstellen .
Über die Registerkarte Anwendung können Sie auch auf die Schaltfläche Anwendungsereignisse anzeigen klicken, um eine Klasse ApplicationEvents.vb zu erstellen, in der Sie das Ereignis der zweiten Instanz behandeln können:
%Vor%Scott Hanselman hat einen schönen Artikel dazu. Der Code ist in C #, aber ich denke, es wird einfach sein, es nach VB zu portieren.
Hier ist ein weiterer Artikel zu dem Thema, falls er nicht Ihren Bedürfnissen entspricht:
In VB.NET ist eine einzelne Instanz-App nur ein Kontrollkästchen auf der Projekt-Eigenschaftsseite . Sie können auch das Ereignis My.Application.StartupNextInstance abfangen, damit Ihre einzelne Instanz etwas anderes tut Kopie wird gestartet. Dies kann zum Beispiel für das MDI-ähnliche Verhalten des Öffnens des angeforderten Dokuments in der ursprünglichen Instanz verwendet werden.
Hinter den Kulissen kapselt dies ein gutes Stück Mutex und IPC-Goo - siehe WindowsFormApplicationBase - und kann auch von C # verwendet werden.
Durch die obigen Tipps habe ich herausgefunden, wie ich meine App zu einer einzigen Instanz machen kann, aber ich musste trotzdem auf eine andere Seite gehen, um GENAU herauszufinden, wie. Hier ist ein einfaches Bild, wie ich es geschafft habe. Es war einfach-peasy und ich hoffe, es hilft anderen mit der gleichen Notwendigkeit, weil ich sicher bin, dass das OP dieses Problem vor 7 Jahren löste:
Wenn sich Ihre Anwendung in VB.NET 2.0-3.5 befindet, besteht die einfachste Möglichkeit, eine einzelne Instanz des Programms auszuführen, in den Eigenschaften des Windows-Anwendungs-Frameworks. Um dorthin zu gelangen, klicken Sie mit der rechten Maustaste auf Ihren Projektnamen und gehen Sie auf "Eigenschaften". Sobald Sie dort angekommen sind, aktivieren Sie das Kontrollkästchen "Einzelinstanz-Anwendung erstellen".
Sie können ApplicationEvents.vb auch verwenden, um dem Benutzer anzuzeigen, dass er Ihr Programm ein zweites Mal ausgeführt hat. Sie können dies einfach im selben Eigenschaftenfenster erstellen / anzeigen, indem Sie auf die Schaltfläche "Anwendungsereignisse anzeigen" klicken. Dort können Sie den Unterordner MyApplication_StartupNextInstance auswählen und dort Code eingeben, wie folgt:
%Vor%Lass es mich wissen, wenn das hilft! JFV
Verwenden Sie %code% . Effektiv kann ein %code% mit einer Zeichenfolge benannt werden und ist innerhalb der CLR eindeutig.
Beispielcode:
%Vor%Von diesem Beitrag :
Ich dachte, es wäre einfacher, das Beispiel hier anstelle eines Links zu haben.
%Vor%Weisen Sie Ihrer App einen eindeutigen Bezeichner zu, z. B. eine fest codierte GUID, und erstellen Sie eine Mutex-Instanz, der Sie den Mutex zuweisen. Wenn es eine Ausnahme auslöst, bedeutet dies, dass Ihre Anwendung bereits ausgeführt wird (da es erfolgreich den Mutex erstellt hat)
Dies ist etwas, das ich benutzt habe ... (C # auf .NET 2.0)
%Vor%Das gebräuchlichste Muster dafür ist das Singleton-Muster. Da Sie keine Sprache angegeben haben, gehe ich davon aus, dass Sie sich hier auf C # beziehen - wenn nicht, sind die Prinzipien in den meisten OO-Sprachen immer noch dieselben.
Diese Artikel sollten Sie etwas Hilfe geben.
Das gebräuchlichste Muster dafür ist das Singleton-Muster. Da Sie keine Sprache angegeben haben, gehe ich davon aus, dass Sie sich hier auf C # beziehen - wenn nicht, sind die Prinzipien in den meisten OO-Sprachen immer noch dieselben.
Diese Artikel sollten Sie etwas Hilfe geben.
Dies ist etwas, das ich benutzt habe ... (C # auf .NET 2.0)
%Vor%In VB .NET gibt es eine IsSingleInstance Boolesche Eigenschaft das macht den Job für dich.
In VB (aus hier ):
%Vor%So verwenden Sie es in C # (aus hier ):
%Vor%Stellen Sie sicher, dass Sie in Ihrem Projekt auf die Microsoft.VisualBasic.dll verweisen.
Öffnen Sie Ihre Projekteigenschaften (Registerkarte "Anwendung"), und aktivieren Sie die Option Einzelinstanzanwendung erstellen .
Über die Registerkarte Anwendung können Sie auch auf die Schaltfläche Anwendungsereignisse anzeigen klicken, um eine Klasse ApplicationEvents.vb zu erstellen, in der Sie das Ereignis der zweiten Instanz behandeln können:
%Vor%In VB.NET ist eine einzelne Instanz-App nur ein Kontrollkästchen auf der Projekt-Eigenschaftsseite . Sie können auch das Ereignis My.Application.StartupNextInstance abfangen, damit Ihre einzelne Instanz etwas anderes tut Kopie wird gestartet. Dies kann zum Beispiel für das MDI-ähnliche Verhalten des Öffnens des angeforderten Dokuments in der ursprünglichen Instanz verwendet werden.
Hinter den Kulissen kapselt dies ein gutes Stück Mutex und IPC-Goo - siehe WindowsFormApplicationBase - und kann auch von C # verwendet werden.
Durch die obigen Tipps habe ich herausgefunden, wie ich meine App zu einer einzigen Instanz machen kann, aber ich musste trotzdem auf eine andere Seite gehen, um GENAU herauszufinden, wie. Hier ist ein einfaches Bild, wie ich es geschafft habe. Es war einfach-peasy und ich hoffe, es hilft anderen mit der gleichen Notwendigkeit, weil ich sicher bin, dass das OP dieses Problem vor 7 Jahren löste:
Wenn sich Ihre Anwendung in VB.NET 2.0-3.5 befindet, besteht die einfachste Möglichkeit, eine einzelne Instanz des Programms auszuführen, in den Eigenschaften des Windows-Anwendungs-Frameworks. Um dorthin zu gelangen, klicken Sie mit der rechten Maustaste auf Ihren Projektnamen und gehen Sie auf "Eigenschaften". Sobald Sie dort angekommen sind, aktivieren Sie das Kontrollkästchen "Einzelinstanz-Anwendung erstellen".
Sie können ApplicationEvents.vb auch verwenden, um dem Benutzer anzuzeigen, dass er Ihr Programm ein zweites Mal ausgeführt hat. Sie können dies einfach im selben Eigenschaftenfenster erstellen / anzeigen, indem Sie auf die Schaltfläche "Anwendungsereignisse anzeigen" klicken. Dort können Sie den Unterordner MyApplication_StartupNextInstance auswählen und dort Code eingeben, wie folgt:
%Vor%Lass es mich wissen, wenn das hilft! JFV
Weisen Sie Ihrer App einen eindeutigen Bezeichner zu, z. B. eine fest codierte GUID, und erstellen Sie eine Mutex-Instanz, der Sie den Mutex zuweisen. Wenn es eine Ausnahme auslöst, bedeutet dies, dass Ihre Anwendung bereits ausgeführt wird (da es erfolgreich den Mutex erstellt hat)
Ich dachte, es wäre einfacher, das Beispiel hier anstelle eines Links zu haben.
%Vor%Tags und Links vb.net single-instance