Come per intrappolare l'OutOfMemoryException in .NET (componente aggiuntivo di Excel)

StackOverflow https://stackoverflow.com/questions/776080

  •  13-09-2019
  •  | 
  •  

Domanda

Io sono sempre delle eccezioni OutOfMemory nel mio .net componente aggiuntivo. Il componente aggiuntivo è utilizzare gran numero di oggetti gestiti e non gestiti. C'è un modo per intercettare questa eccezione?

Aggiornamento: Credo qualsiasi applicazione può ottenere un'eccezione OutofMemory se processess una grande quantità di dati che devono essere elaborati e non liberato periodicamente. Supponiamo che io sono un metodo che analizza alcune strutture in memoria. Dò 300 strutture, esso carica ognuno in memoria, li analizza e completa trasformazione. In questa operazione l'utilizzo della memoria è stato X. Ora, se lo do 3000 strutture per l'elaborazione, sta andando ad analizzare quelli 3000 in memoria e l'utilizzo della memoria andrà a 10 volte.

Aggiornamento

Questo problema si verifica solo in Excel 2007 e non in Excel 2003 che ho per questo ho chiesto un personale MSDN per esaminare il problema.

È stato utile?

Soluzione

Nel Net l'OutOfMemoryException è un tiro dal runtime quando non può allocare la memoria richiesta per l'applicazione. Come tale c'è ben poco lavoro effettivo che può essere fatto per gestire una tale eccezione.

Invece di cattura esso si dovrebbe evitare che accada, in primo luogo. Ignorando l'eccezione non farà il problema andare via.

Altri suggerimenti

Se si ottiene un OutOfMemoryException vostro programma è morto, ha cessato di esistere, trasmesso, esso non è più ed è andato a incontrare il suo creatore.

Ma sul serio, non è in grado di recuperare parte della memoria è a corto di così non si può fare nulla.

Potrebbe essere il garbage collector voi ottenere. Prova periodicamente costringendo raccolta.

Se questo non aiuta, leggere questo: http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top