J'ai un certain code qui fait quelque chose comme ça (des bits non pertinents étirés): n'importe où la plupart du temps que cela courait bien. En premier. Comme le projet a continué, il a commencé à échouer sur la nouvelle ligne bitmap. L'erreur qu'il donne est la suivante: "L'argumentException n'a pas été non gérée. Le paramètre n'est pas valide." Il n'y a aucune mention de quel paramètre il a un problème avec ou quoi que ce soit. Je suis exclu. Voici ce que je sais à coup sûr: p> Je suis tenté de dire que c'est une erreur de mémoire, sauf cela ne mentionne rien du genre. La première dizaine de fois ou donc cela s'est produit les hauteurs totalisés sur 18 000 (d'où le nombre magique ci-dessus). FIMPING, C'était une sorte de barrière molle à notre système, nous venons de limiter les images à cette hauteur qui ont fait disparaître les exceptions après un certain temps. P> pour quelques données d'échantillon, l'exception que je regarde à droite Maintenant, a BMP1.Width à 2550, BMP1.Height à 6135 et BMP2.Height à 6285. P> Quelqu'un a des idées? P> P>
3 Réponses :
Quelqu'un a des idées? P>
envelopper l'appel qui lance
argumentexception code> avec un
track-catch (exception ex) code> et entrez dans le bloc d'exception pour voir l'exception brute. Il devrait em> vous donner plus de détails, comme quel argument est censé invalide. P>
xxx pré> blockquote>
Droit. Aurait dû mentionner que j'ai essayé cela. Cela ne me donne presque plus d'informations. Il n'y a pas d'exception interne, le message (dans son intégralité) est "Paramètre n'est pas valide.", La source est étiquetée comme "System.Drawing" et la trace de la pile a "à System.Drawing.Bitmap..ctor (largeur int32, Int32 hauteur, format de PixelFormat) "au niveau supérieur. Je ne sais pas quoi d'autre je pouvais obtenir de l'exception.
C'est intéressant. Et par intéressant i> je veux dire, "Puissiez-vous mener une vie intéressante" -Interest. Deux des ArgumentException CODE> Constructeurs acceptent une chaîne de noms de paramètres, et c'est intéressant i> que le constructeur
bitmap code> ne l'utilise pas quand il est clair qu'il est disponible.
Toute solution pour ce problème?
@Fabianolothor, la réponse acceptée ci-dessus semble l'expliquer assez bien. C'est à dire. L'exception est médiocre, mais le problème est situé en pierre: pas assez de mémoire contiguë disponible pour la taille du bitmap que vous essayez d'allouer.
J'ai résolu mon problème en utilisant une autre classe d'ItextShaRP. J'utilise maintenant le projet WKHTMLTOPDF.
Vérifiez si BMP1 ou BMP2 a été disposé (même s'il n'est pas null). Voyez ici: P>
GDI + ne génère pas de très bons messages d'exception. L'exception que vous avez obtenue est floconneuse, celle-ci le générera de manière fiable sur ma machine: Qu'est-ce qui se passe vraiment est que ce bitmap nécessite une mémoire non gérée trop contiguë pour stocker les bits bitmap, plus de est disponible dans votre processus. Sur un système d'exploitation de 32 bits, vous ne pouvez jamais espérer que vous n'éprouvez jamais un morceau de mémoire autour de 550 mégaoctets. Cela va rapidement sur la colline de là. P> Le problème est l'adresse de l'espace fragmentation, la mémoire virtuelle de votre programme stocke un mélange de code et de données à diverses adresses. L'espace mémoire total est autour de 2 gigaoctets, mais le plus grand trou est beaucoup plus petit que cela. Vous ne pouvez consommer que toute la mémoire avec beaucoup de petites allocations, les gros échouent beaucoup plus rapidement. P> Longue histoire courte: il tente de vous dire que la taille que vous avez demandée ne peut pas être prise en charge. P> Un système d'exploitation 64 bits n'a pas ce problème. Assurez-vous de le profiter avec le projet> Propriétés> Onglet Construction, Cible de la plate-forme = AnyCPU et préférez 32 bits = non liés. En outre, WPF s'appuie sur WIC, une bibliothèque d'imagerie qui est beaucoup plus intelligente sur l'allocation de tampons pour les bitmaps. P> P>
Ceci, couplé au lien de Kyralessa, a presque expliqué le problème. Maintenant, je dois juste réparer la fuite de mémoire. :( Merci les gars!
En fait, j'ai le même problème de débogage avec Visual Studio sur Windows 7 64 Bit. Sur un système d'exploitation 64 bits ne l'empêche pas complètement.
Changez le réglage de la citation de la plate-forme de votre projet EXE en AnyCPU afin que vous profitiez d'un espace d'adresse 64 bits.