myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Office-Technologien » Outlook: Export Programm bringt "System.OutOfMemoryException"
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Outlook: Export Programm bringt "System.OutOfMemoryException"

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
flex flex ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.08.2019
Beiträge: 3


flex ist offline

Outlook: Export Programm bringt "System.OutOfMemoryException"

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

ich entwickle gerade ein kleines Programm, mit dem ich die E-Mails sowie Meetings exportieren kann. Alles Items sollen auf dem Dateisystem gespeichert werden, mit der Ordnerstruktur wie sie in Outlook angelegt sind.

C#-Code:
private void ExportItems(MAPIFolder folder)
        {
            Directory.CreateDirectory(ExportPathField.Text + folder.FullFolderPath);

            Items items = folder.Items;
            if (items.Count > 0)
            {
                for (int counter = 1; counter <= items.Count; counter++)
                {
                    object item = items[counter];

                    switch (Microsoft.VisualBasic.Information.TypeName(item))
                    {
                        case "MailItem":
                            (item as MailItem).SaveAs(ExportPathField.Text + folder.FullFolderPath + @"\" + (item as MailItem).ReceivedTime.ToOADate() + ".msg");
                            break;
                        case "MeetingItem":
                            (item as MeetingItem).SaveAs(ExportPathField.Text + folder.FullFolderPath + @"\" + (item as MeetingItem).ReceivedTime.ToOADate() + ".msg");
                            break;
                        default:
                            break;
                    }
                    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(item);
                }
            }
            System.Runtime.InteropServices.Marshal.FinalReleaseComObject(items);

            for (int counter = 1; counter <= folder.Folders.Count; counter++)
            {
                ExportItems(folder.Folders[counter]);
                System.Runtime.InteropServices.Marshal.FinalReleaseComObject(folder.Folders[counter]);
            }
}

Das Programm funktioniert mir kleinen Postfächern super, allerdings gibt es bei größeren eine "System.OutOfMemoryException". Der bis dort hin exportierte Ordner ist dann 999MB groß. Ich habe den Build schon auf 64-Bit umgestellt und in der App.cfg folgendes eingefügt, allerdings ohne Erfolg:

XML-Code:
<runtime>
   <gcAllowVeryLargeObjects enabled="true" />
</runtime>

Ich hoffe Ihr könnt mir helfen und sagen wo mein Fehler ist.

Viele Grüße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von flex am 07.08.2019 08:33.

07.08.2019 08:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
hypersurf hypersurf ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.10.2008
Beiträge: 466
Entwicklungsumgebung: VS Studio 2019, Android Studio
Herkunft: Münster


hypersurf ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Kannst Du mal den Stacktrace posten?
08.08.2019 08:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
flex flex ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.08.2019
Beiträge: 3

Themenstarter Thema begonnen von flex

flex ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

So wie das aussieht funktioniert das nicht.

Fehlermeldung:
System.OutOfMemoryException
HResult=0x8007000E
Nachricht = Es steht nicht genügend Arbeitsspeicher zur Verfügung. Schließen Sie einige Dateien oder Programme, und versuchen Sie es erneut
Quelle = <Die Ausnahmequelle kann nicht ausgewertet werden.>
Stapelüberwachung:
<Die Ausnahmestapelüberwachung kann nicht ausgewertet werden.>
08.08.2019 10:46 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ThomasE. ThomasE. ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 26.11.2013
Beiträge: 437
Entwicklungsumgebung: Visual Studio 2015Pro/2017Ent


ThomasE. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

An welcher Stelle genau in dem Code oben tritt der Fehler auf?
08.08.2019 11:02 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Taipi88 Taipi88 ist männlich
myCSharp.de-Mitglied

avatar-3220.jpg


Dabei seit: 02.02.2010
Beiträge: 972
Entwicklungsumgebung: VS 2010
Herkunft: Mainz


Taipi88 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hi,

so wie ich Office kenne - muss man jedes Objekt separat freigeben. Das sieht zwar bei dir eigentlich danach aus als ob - andererseits hatte ich bei direkter Verwendung der PIA's selbst schon ähnliche Probleme - mit NetOffice war das Problem bei mir von alleine behoben...

LG
08.08.2019 11:53 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
flex flex ist männlich
myCSharp.de-Mitglied

Dabei seit: 07.08.2019
Beiträge: 3

Themenstarter Thema begonnen von flex

flex ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

An dieser Stelle:

C#-Code:
(item as MailItem).SaveAs(ExportPathField.Text + folder.FullFolderPath + @"\" + (item as MailItem).ReceivedTime.ToOADate() + ".msg");
08.08.2019 12:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
ThomasE. ThomasE. ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 26.11.2013
Beiträge: 437
Entwicklungsumgebung: Visual Studio 2015Pro/2017Ent


ThomasE. ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo, kann es sein das die Platte voll läuft? Ganz eine einfache Frage ;)
08.08.2019 16:12 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.951
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich meine, dass Taipi hier Recht hat.
Outlook ist zickig und will i.d.R. Dinge einzeln disposed haben.

Sei Dir aber bewusst, dass der Zugriff auf Exchange/Office 365 ohnehin der bessere Weg wäre, als direkt sich an Outlook zu hängen.
08.08.2019 18:06 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 20.09.2019 16:59