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.