Laden...

Ausnahme von HRESULT: 0x80070008

Erstellt von ctfwp444 vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.927 Views
C
ctfwp444 Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren
Ausnahme von HRESULT: 0x80070008

Hallo alle und danke im voraus für jeden der mir weiterhelfen kann. Mit der Suche hier im Forum und im Internet bin ich nicht weiter gekommen. Ich bin dabei ein 32-Bit Tool zu entwickeln, dass eine sehr große Datenmenge aus einer Datenbank hochlädt und bearbeitet. Die Berechnung läuft in einem Thread und das Programm braucht dabei fast 2 GB Arbeitsspeicher. Nach der Berechnung wird das Ergebnis in einem GridView ausgegeben und der Arbeitsspeicher freigegeben, so, dass das Programm am Ende nur 150 MB braucht. Jetzt brauche ich eine Exportfunktion um die Ergebnisse zu exportieren. Der User soll eine Datei auswählen, in die alles gespeichert werden soll. Das mache ich über:


SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Excel 2003 (*.xls)|*.xls";
dlg.OverwritePrompt = true;
dlg.CheckPathExists = true;
if (dlg.ShowDialog() != DialogResult.OK)
...

Leider stürzt das Programm bei der If-Abfrage mit folgender Fehlermeldung ab.

Fehlermeldung:
Die COM-Klassenfactory für die Komponente mit CLSID {C0B4E2F3-BA21-4773-8DBA-335EC946EB8B} konnte aufgrund des folgenden Fehlers nicht abgerufen werden: 80070008 Für diesen Befehl ist nicht genügend Speicher verfügbar. (Ausnahme von HRESULT: 0x80070008).

ErrorCode: -2147024888

Bin für jede Hilfe dankbar.
c# Microsoft Visual Studio 2010
Windows 7 Professional x64 6GB

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo ctfwp444,

klingt so, als wäre wirklich zu wenig Speicher vorhanden. Du könntest versuchen, die Daten kompakter zu repräsentieren.

herbivore

C
ctfwp444 Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Das Programm braucht nach der Berechnung nur 150 MB. Die Ergebnismenge, die in GridView ausgegeben wird ist relativ klein (ca. 1000 Einträge). Es ist genügend freies Speicher vorhanden also.

B
357 Beiträge seit 2010
vor 11 Jahren

Wenn der Taskmanager 150 MB Verbrauch anzeigt, muss das nicht den Tatsachen entsprechen.

C
ctfwp444 Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Ja. Das Problem lag am Arbeitsspeicher. Es wurde zu sehr fragmentiert. Das Problem habe ich gelöst in dem ich das Programm auf 64-Bit umgestellt habe.