So stellen Sie sicher, dass eine Instanz der Anwendung ausgeführt wird

7
___ qstnhdr ___ So stellen Sie sicher, dass eine Instanz der Anwendung ausgeführt wird ___ answer391410 ___

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.

    
___ answer391431 ___

Ö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%     
___ answer391383 ___

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:

Ссылка

    
___ answer391448 ___

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.

    
___ answer32171748 ___

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:

    
___ answer391433 ___

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

    
___ answer391366 ___

Verwenden Sie %code% . Effektiv kann ein %code% mit einer Zeichenfolge benannt werden und ist innerhalb der CLR eindeutig.

Beispielcode:

%Vor%

Von diesem Beitrag :

    
___ answer391393 ___

Ich dachte, es wäre einfacher, das Beispiel hier anstelle eines Links zu haben.

%Vor%     
___ answer391369 ___

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)

    
___ tag123vbnet ___ Visual Basic.NET (VB.NET) ist eine verwaltete, typsichere, objektorientierte Computerprogrammiersprache mit mehreren Paradigmen. Zusammen mit C # und F # ist es eine der Hauptsprachen für .NET Framework. VB.NET kann als eine Weiterentwicklung von Microsoft Visual Basic 6 (VB6) betrachtet werden, ist aber auf dem Microsoft .NET Framework implementiert. Verwenden Sie dieses Tag NICHT für VB6-, VBA- oder VBScript-Fragen. ___ tag123singleinstance ___ hilf uns dieses Wiki zu bearbeiten ___ answer391368 ___

Dies ist etwas, das ich benutzt habe ... (C # auf .NET 2.0)

%Vor%     
___ answer391344 ___

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.

    
___
BDeveloper 24.12.2008, 12:19
quelle

11 Antworten

-2

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.

    
Pete OHanlon 24.12.2008, 12:25
quelle
8

Dies ist etwas, das ich benutzt habe ... (C # auf .NET 2.0)

%Vor%     
Jon Dewees 24.12.2008 12:49
quelle
6

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.

    
Yuval Peled 24.12.2008 13:35
quelle
2

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:

Ссылка

    
lacop 24.12.2008 13:08
quelle
2

Ö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%     
Gordon Bell 24.12.2008 13:44
quelle
2

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.

    
Mark Brackett 24.12.2008 13:51
quelle
2

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:

    
cardmagik 23.08.2015 21:30
quelle
1

Verwenden Sie Mutex . Effektiv kann ein Mutex mit einer Zeichenfolge benannt werden und ist innerhalb der CLR eindeutig.

Beispielcode:

%Vor%

Von diesem Beitrag :

    
biozinc 24.12.2008 12:46
quelle
1

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

    
JFV 24.12.2008 13:44
quelle
0

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)

    
Sean 24.12.2008 12:51
quelle
0

Ich dachte, es wäre einfacher, das Beispiel hier anstelle eines Links zu haben.

%Vor%     
Cédric Guillemette 24.12.2008 13:20
quelle

Tags und Links