locked
Mémoire non libérée dans Outlook 2007 RRS feed

  • Question

  • J'ai un problème de mémoire qui n'est pas libérée après accès à la valeur de ItempProperty de Outlook 2007 avec VB 2008. Quand le met en commentaire la section avec ItemProperty la mémoire est libérée sans problème alors je sais à coup sûr que le problème est avec cet objet.

    Ce que je veux faire c'est synchroniser des items de Outlook avec une base de données Access en faisant un boucle dans l'objet ItemProperties des items de Outlook. Je dois bien sur ignorer les ItemProperty de type objet COM alors j'ai d'abord essayé en appellant Marshal.IsComObject(ItemProperty.Value) mais il semble que le simple fait d'utiliser cette alloue l'objet de manière implicite alors j’ai ensuite essayé en allouant l’objet de manière explicite pour pouvoir ensuite le désallouer mais sans succès…

    Voici la portion de code en question :

            For PropertyIndex = 0 To ItemProperties.Count - 1
                ItemProperty = ItemProperties(PropertyIndex)
                Value = ItemProperty.Value
                If Marshal.IsComObject(Value) Then
                    Marshal.ReleaseComObject(Value)
                    Value = Nothing
                    GC.Collect()
                    GC.WaitForPendingFinalizers()
                    GC.Collect()
                Else
                    'Call SyncValue()
                End If
                Marshal.ReleaseComObject(ItemProperty)
                ItemProperty = Nothing
                GC.Collect()
                GC.WaitForPendingFinalizers()
                GC.Collect()
            Next PropertyIndex

    Merci!

    samedi 25 décembre 2010 16:18