Je me suis récemment mis au développement sous windows mobile (j'ai déjà de l'expérience en développement vb .net sur pc), et je me retrouve un peu embêté par la gestion de la mémoire windows mobile :s
Voila mon code :
Code :
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Threading
Imports System.Xml
Namespace DodgerCodeSnippets
''' <summary>
''' Description résumée de FormMain.
''' </summary>
Public Class FormMain
Inherits System.Windows.Forms.Form
Private lst As New List(Of String)
Private offScreenBitmap As Bitmap
Private offScreenGraphics As Graphics
' Représenta la zone dans laquelle on dessine les items
Private onScreenGraphics As Graphics
' Représenta la zone réellement affichée
Private m_bSelectionDone As Boolean = False
Private m_iScreenWidth As Integer = 480
' Taille de l'écran
Private m_iScreenHeight As Integer = 588
Private m_iItemsCount As Integer = Nothing
' Nombre d'Item dans la liste
Private m_iItemheight As Integer = 80
' auteur d'un item
Private m_iStripWidth As Integer = 480
Private m_iStripHeight As Integer = 588
' Hauteur totale de la liste
Private m_iStripPosY As Integer = 1
Private m_iOldStripPosY As Integer = -10
Private m_iMoveStep As Integer = 1
' Déplacement en nombre de pixels à chaque boucle
Private m_iSens As Integer = 0
' 0,+1,-1
Private m_iTouchStartY As Integer = 0
' Position en pixel de l'endroit où l'on a posé le doigt
Private m_iTouchEndY As Integer = 0
' Position en pixel de l'endroit où l'on a relevé le doigt
Private m_iSelectedIndexItem As Integer = -1
' Numéro de l'Item sélectionné
Private m_iPixelPerScroll As Integer = 0
' De combien de pixel doit on scrollé après un mouvement de doigt sur l'écran
Private m_iSleep As Integer = 3
' nombre de milliseconde d'attente dans la boucle
Public Shared OddCellBackGroundColor As System.Drawing.Color = System.Drawing.Color.Transparent
Public Shared EvenCellBackGroundColor As System.Drawing.Color = System.Drawing.Color.Transparent
Public Shared SelectedCellBackGroundColor As System.Drawing.Color = System.Drawing.Color.Transparent
Public Shared CellBorderColor As System.Drawing.Color = System.Drawing.Color.LightGray
Public Sub New()
parsexml()
m_iItemsCount = lst.Count
InitScreens()
DoLoop()
End Sub
Private Sub InitScreens()
Me.Visible = True
Me.WindowState = FormWindowState.Normal
m_iStripHeight = m_iItemsCount * m_iItemheight
' Creation d'un ecran virtuel plus grand que l'écran du PDA qui contient toute la liste
offScreenBitmap = New Bitmap(m_iStripWidth, m_iStripHeight)
'read the xml declaration and advance to family tag
m_xmlr.Read()
'read the family tag
m_xmlr.Read()
'Load the Loop
While Not m_xmlr.EOF
'Go to the name tag
m_xmlr.Read()
'if not start element exit while loop
If Not m_xmlr.IsStartElement() Then
Exit While
End If
'Get the Gender Attribute Value
Dim nameAttribute As String = m_xmlr.GetAttribute("name" )
'Read elements firstname and lastname
m_xmlr.Read()
lst.Add(nameAttribute)
End While
'close the reader
m_xmlr.Close()
End Function
End Class
End Namespace
Ici la taille de l'item dans ma listbox est de 80px, le nombre d'item était, au moment du test, de 386, sois un écran virtuel de 30880 * 480 pixels (voir ligne en rouge dans le code). Ça semble être un peu lourd à gérer pour wm6 qui, si j'ai bien compris, ne supporte que des process de 32mo.
Ma listbox s'affiche parfaitement si je prends 10 comme taille d'item, le problème est que c'est beaucoup trop petit pour être utilisé au doigt, les items étant plus petit que ceux de la listbox d'origine
Comment réduire cette consommation de mémoire ou partager en plusieurs processus ce bout de code ?
Marsh Posté le 28-10-2008 à 14:24:46
Bonjour,
Je me suis récemment mis au développement sous windows mobile (j'ai déjà de l'expérience en développement vb .net sur pc), et je me retrouve un peu embêté par la gestion de la mémoire windows mobile :s
Voila mon code :
Ici la taille de l'item dans ma listbox est de 80px, le nombre d'item était, au moment du test, de 386, sois un écran virtuel de 30880 * 480 pixels (voir ligne en rouge dans le code). Ça semble être un peu lourd à gérer pour wm6 qui, si j'ai bien compris, ne supporte que des process de 32mo.
Ma listbox s'affiche parfaitement si je prends 10 comme taille d'item, le problème est que c'est beaucoup trop petit pour être utilisé au doigt, les items étant plus petit que ceux de la listbox d'origine
Comment réduire cette consommation de mémoire ou partager en plusieurs processus ce bout de code ?
Merci d'avance