Buenas
He acudido a varias personas del planeta para intentar resolver este problema de la manera idonea, pero por desgracia nadie ha podido aportarme algo de lúz a este misterio...
Me gustaría usar la interface de My.Settings para poder implementar una MRU algo avanzada en una aplicación, cada entrada de la MRU debería contener una imagen (Bitmap), un índice (Int32), y una cadena (String), pero la interface My.Settings es incompatible con Types genéricos (Ej: Tuple(of Bitmap, Integer, String) ) así que el type que mejor se adapta a mis necesidades es un ArrayList, porque antes que ponerme a escribir una pequeña Class serializable para almacenar estos 3 datos insignificantes prefiero usar un ArrayList que ya está implementado, sinceramente.
El problema es que los cambios que se efectuen a la propiedad no se preservan en los siguientes inicios de la aplicación ...y eso es lo que nadie me ha sabido resolver, yo por mi parte he probado todo lo que se me ha ocurrido, incluso la serialización del ArrayList pero he acabado echo un lio con eso.
Teniendo en cuenta que tenemos una propiedad como esta (con el ArrayList inicializado o sin inicializar, ¡no importa!):
Este código que he escrito demuestra el problema:
¿Alguien conoce el motivo de porque ocurre esto, porque los cambios no se preservan en el siguiente inicio de la aplicación, y como poder solucionarlo?
PD: Me gustaría dejar bien claro que conozco varios métodos o mejor dicho alternativas para conseguir hacer lo mismo (es decir, guardar un archivo de configuración legible por la app), pero yo me he propuesto hacer esto usando My.Settings debido a las ventajas y comodidades que ofrece, quiero encarecidamente intentar resolver este problema unicamente usando my.settings y conocer con exactitud el motivo de porque el ArrayList no se preserva, no busco alternativas ...pues ya las conozco.
Gracias.
He acudido a varias personas del planeta para intentar resolver este problema de la manera idonea, pero por desgracia nadie ha podido aportarme algo de lúz a este misterio...
Me gustaría usar la interface de My.Settings para poder implementar una MRU algo avanzada en una aplicación, cada entrada de la MRU debería contener una imagen (Bitmap), un índice (Int32), y una cadena (String), pero la interface My.Settings es incompatible con Types genéricos (Ej: Tuple(of Bitmap, Integer, String) ) así que el type que mejor se adapta a mis necesidades es un ArrayList, porque antes que ponerme a escribir una pequeña Class serializable para almacenar estos 3 datos insignificantes prefiero usar un ArrayList que ya está implementado, sinceramente.
El problema es que los cambios que se efectuen a la propiedad no se preservan en los siguientes inicios de la aplicación ...y eso es lo que nadie me ha sabido resolver, yo por mi parte he probado todo lo que se me ha ocurrido, incluso la serialización del ArrayList pero he acabado echo un lio con eso.
Teniendo en cuenta que tenemos una propiedad como esta (con el ArrayList inicializado o sin inicializar, ¡no importa!):
Este código que he escrito demuestra el problema:
Código (vbnet) [Seleccionar]
Public Class Test
Private Sub Test_Handler() Handles MyBase.Shown
' Create a temporal predefined ArrayList.
Dim tmpArrayList As New ArrayList(capacity:=10I)
With tmpArrayList
.Add({"Item0", 0.0F})
.Add({"Item1", 0.5F})
End With
' Check the setting status.
If My.Settings.MRU Is Nothing Then
Debug.WriteLine("MRU setting is null.")
Debug.WriteLine("Initializing the Setting...")
My.Settings.MRU = New ArrayList(capacity:=10I)
ElseIf Not My.Settings.MRU.Count Then
Debug.WriteLine("MRU is not null but the ArrayList is empty.")
Debug.WriteLine("Adding some items...")
My.Settings.MRU = tmpArrayList.Clone
ElseIf My.Settings.MRU.Count Then
Debug.WriteLine("MRU setting is OK.")
Debug.WriteLine("Item Count: " & CStr(My.Settings.MRU.Count))
Threading.Thread.Sleep(Integer.MaxValue)
End If
Debug.WriteLine("Saving any changes")
My.Settings.Save()
Debug.WriteLine("Updating any changes")
My.Settings.Reload()
Debug.WriteLine(String.Empty)
Debug.WriteLine("****************************************")
Debug.WriteLine("Checking again the MRU setting status in...")
For Count As Integer = 1 To 3
Debug.WriteLine(CStr(Count) & New String("."c, Count))
Threading.Thread.Sleep(TimeSpan.FromSeconds(1))
Next
Debug.WriteLine("****************************************")
Debug.WriteLine(String.Empty)
Me.Test_Handler()
End Sub
End Class
¿Alguien conoce el motivo de porque ocurre esto, porque los cambios no se preservan en el siguiente inicio de la aplicación, y como poder solucionarlo?
PD: Me gustaría dejar bien claro que conozco varios métodos o mejor dicho alternativas para conseguir hacer lo mismo (es decir, guardar un archivo de configuración legible por la app), pero yo me he propuesto hacer esto usando My.Settings debido a las ventajas y comodidades que ofrece, quiero encarecidamente intentar resolver este problema unicamente usando my.settings y conocer con exactitud el motivo de porque el ArrayList no se preserva, no busco alternativas ...pues ya las conozco.
Gracias.