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
|
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...