Gambas France BETA


Pas de compte ? Incription

[GB3]Session Unique, et ReDémarrage Forcé d'une Application.

À propos de ce code

Bonsoir @ Toutes & Tous.

Un petit bout de Code Simple.
Empêchant de Relancer une 2ème fois l'Application,
ou Forcer le Démarrage d'une nouvelle session,(Auto ou Manuel.)
tout en fermant la Précédente.
J'ai Ajouté un < TextBox >, et un < Button > pour Tester.

Reivillo.

Code source

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
PUBLIC $sPATHTMP AS STRING = Application.path & "/tmp"
PUBLIC $sPATHALL AS STRING = Application.path & "/" & Application.name & ".gambas"

PUBLIC SUB Form_Open()

IF Exist($sPATHTMP) THEN
'Si une Session de l'Application est déjà Démarrer, on Quitte immédiatement.
QUIT
ELSE
' On Cré un Fichier, pour Éviter un Redémarrage de Session Accidentel,
' et qui servira éventuellement, au ReDémarrage Forcé d'une nouvelle Session.
File.Save($sPATHTMP, Application.Id)
ENDIF
WAIT 2 ' Pour le Redémarrage Forcé, Delay suivant l'Application...
TextBox1.Text = "Application.Id: " & Application.Id ' Pour Test.


'CODE de l'Application ICI.


END

PUBLIC SUB Form_Close()

KILL $sPATHTMP

END

PUBLIC SUB ForceRestart() ' Pour un Redémarrage Forcé, Auto ou Manuel, de l'Application.

EXEC [$sPATHALL] ' Lance une nouvelle Session de l'Application.
SHELL "kill " & File.Load($sPATHTMP) ' Tue la précédente Session.
KILL $sPATHTMP

END

PUBLIC SUB Button1_Click() ' Pour test.(Redémarrage Manuel.)

ForceRestart

END

Commentaires

Commentaire de Foromus, Le 20/10/2014 à 11:40:59
Bonjour Reivillo,

J'ai déjà utilisé ce genre de procédé pour éviter une seconde tentative d'ouverture. En fait, ça marche bien, on crée un fichier temporaire et on l'efface à la fermeture du programme.
L'inconvénient, c'est quand ça plante...
Quand on en est à la conception - dans l'ide donc, pour moi, je mets le truc HS car, si pour une raison ou une autre, on termine un peu vite, on ne peut plus redémarrer, il faut aller chercher le fichier et le détruire.
Pour mes programmes, j'ai fait une routine appelée à l'ouverture, et si je suis en mode "conception", je la bloque purement et simplement, et la remets en service lorsque tout va bien et que je crée le projet.gambas.
Mettre un bouton pour forcer le redémarrage, c'est bien, je ne crois pas que ça suffise si on est dans l'ide.
Bon, c'est à voir...