Bonjour,
J’aimerais gérer les paramètres par défaut de mon appli, j’ai vu que cela était possible en gérant les my.settings, mais j’aimerais le faire avec un fichier dédié
Je rencontre un pb de durée de vie de ma classe Singleton, sûrement du à mon ignorance donc vous remercie par avance de m’aider à corriger mes lacunes
Grâce à l’excellent Tuto de Philippe Lasserre , j’ai crée une classe singleton (voir image 20130225-10)
J’ai crée un Form pour modifier/enregistrer ces paramètres via Serialize/Deserialize
Au démarrage du Form principal, j’instancie cette classe et en charge les valeurs
Les données sont bien présentes au chargement du Form principal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Dim PC As ParametreConfig = ParametreConfig.getInstance Public Sub ChargementParametreConfig() Call BinaryDeSerialize() LbLMessage1.Text = "Chargement effectué des paramétres de configuration ! " & PC.Exemple End Sub Private Sub BinaryDeSerialize() Dim Fichier As String = "ParametreConfig.bin" If Not File.Exists(Fichier) Then MessageBox.Show("Fichier de configuration non trouvé !" & vbLf & "Veuillez le créer dans le Menu : Utilitaires / Général !") Exit Sub End If Dim Deserializer As New BinaryFormatter Dim Stream As FileStream = New FileStream(Fichier, FileMode.Open) PC = CType(Deserializer.Deserialize(Stream), ParametreConfig) Stream.Close() End Sub
Je voudrais maintenant utiliser ces paramétres dans d’autres Form, sans avoir à les recharger en les récupérant dans l’instance en cours (Form principal toujours ouvert)
Pour mes essais, j’ai donc essayé à l’ouverture d’un autre Form:
Mais aussi
Code : Sélectionner tout - Visualiser dans une fenêtre à part MessageBox.Show("Parametre chargé : " & ParametreConfig.getInstance.Exemple.ToString)
L’intellisense ne me signale pas d’erreur, mais l’exécution me lève une erreur (voir image 20130225-11). Je ne peux évidemment pas recréer une nouvelle instance par new (Singleton)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Dim PC As ParametreConfig = ParametreConfig.getInstance Pc.Exemple = ParametreConfig.getInstance.Exemple MessageBox.Show("Parametre chargé : " & PC.Exemple.ToString)
Si je recharge (deserialize) la classe dans le Form, alors plus de pb, mais ce n’est pas le but !
Il y a forcément quelque chose que je n’ai pas compris dans la durée de vie de l’instance de ma classe, Singleton ou serialize/deserialize mais je ne vois pas ou !
Par avance merci de vos lumières
Bertrand
Partager