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