Christian,
zum Beenden des Programms. HastDu eventuell kein "DefaultWindow" in der App 
eingestellt und
irgendwo "App.AutoQuit = True" eingebaut?

Zum Mutex:
Wie ich es im Beispiel geschrieben hatte,
Du musst den Mutex in der App.Klasse als
Property / Eigenschaft definieren und nicht
im Open.Event.

Wenn Du "dim meinMutex as Mutex" im Open.Event definierst,
wird der Mutex automatisch von RB geschlossen "leave" wenn
"Open.Event" abgearbeitet ist!

Du willst ja aber erreichen, das der Mutex so lange existiert,
bis das Programm selbst geschlossen wird. Das sollte und macht RB
automatisch. Falls nicht, kannst Du im App.Close Event folgenden Code
einfügen.

// App.Property / Eigenschaft
myMutex As Mutex

// App.Open Event
myMutex = New Mutex( ExecutableFile.Name )
if Not myMutex.TryEnter then
  //
  MsgBox( "Eine Instanz des Programm läuft bereits!" )
  //
  Quit
end if

// App.Close Event
if myMutex <> Nil then
   myMutex.Leave
end if

Grüße
Thomas Nauck



-------- Original Message --------
Subject: Re: Programm nicht 2 Mal starten (07-Mrz-2010 17:11)
From:    Christian Hahn <christian.h...@snafu.de>
To:      li...@pdf-konverter.de

> Hallo,
> 
> was ist jetzt passiert?
> mit folgendem Code in App.Open startet das Programm, msgbox "läuft" kommt 
> auf und dann beendet sich das Programm. Eine zweite Instanz des Programms 
> wurde noch gar nicht versucht zu starten.
> Aber jetzt! Nach Entfernung des codes, Absuchen des Windows Task-Manager 
> und 
> auch Neustart des Rechners schließt sich das Programm immer noch (obwohl 
> der 
> Code gar nicht mehr vorhanden ist).
> 
>   dim meinMutex as Mutex
>   meinMutex = New Mutex( "ZensurenEingabe_19_Client.exe" )
>   if Not meinMutex.TryEnter then
>      msgbox "kein zweiter Programmstart"
>      Quit
>   else
>      msgbox "läuft"
>   end if
> 
> Das ist mir doch noch zu viel Rätselraten, die online-Hilfe und User's 
> Guide 
> Informationen reichen noch nicht zu meinem Verständnis.
> Bisher verstehe ich: Die classes Semaphore, CriticalSection und Mutex haben 
> 
> etwa alle die gleiche Absicht, sie reservieren die Benutzung einer sog. 
> resource für einen bestimmten anderen process.
> Oder muss man sagen, ein process schützt sich vor der Benutzung durch einen 
> 
> anderen process mithilfe eines Semaphore?
> Davon hängt für mein Verständnis ab, wo die Klasse definiert wird und von 
> wem die Befehle enter und leave gesetzt werden.
> Was alles kann eine resource sein?
> Besonders im Falle des Mutex. Was an dem Programm wird geschützt bzw. 
> welche 
> resource versucht ein weiterer Progammstart zu benutzen?
> 
> einstweilen beste Grüße, Christian Hahn.
> 
> ----- Original Message ----- 
> From: "MGE Lists" <li...@pdf-konverter.de>
> To: <realbasic-nug.de@lists.realsoftware.com>
> Sent: Saturday, March 06, 2010 6:52 PM
> Subject: Re: Programm nicht 2 Mal starten
> 
> 
> Hallo Christian,
> dafür nimmst Du am besten einen Mutex der als
> Property in der App.Klasse definiert ist und
> versuchst ihn im App.Open Event zu setzen.
> Als Property, damit er während der kompletten
> Programmlaufzeit erhalten bleibt.
> 
>   //
>   myMutex = New Mutex( "Programmname" )
>   if Not myMutex.TryEnter then
>     //
>     Quit
>   end if
> 
> Grüße
> Thomas
> 
> -------- Original Message --------
> Subject: Programm nicht 2 Mal starten (06-Mrz-2010 17:10)
> From:    Christian Hahn <christian.h...@snafu.de>
> To:      li...@pdf-konverter.de
> 
> > Hallo, ich glaube mich zu erinnern, dass wir das hier schon 'mal hatten,
> > aber ich finde es nicht wieder.
> > Wie kann man verhindern, dass ein Programm nicht 2 Mal gestartet wird, 
> > oder
> > genauer, wie kann man feststellen, ob ein Programm schon gestartet wurde?
> > beste Grüße, Christian Hahn.
> 
> 
> 
> 



Antwort per Email an