Memory Overflow (RELEASE)

0

I'm having a problem with my code ... it's eating a Braba memory ... and it's not pouring memory ... a simple application inside my program ... Printing labels ... every time I print one tag the code takes the ID and generates a QR on the label ... but it is eating a lot of memory and I am not able to dump it ... any tips? follow the code ...

using MessagingToolkit.QRCode.Codec;
using System.Drawing;
using System.IO;

    public class QRCode
        {
            //guarda imagem QR em byte[]
            public static byte[] imgQR { get; set; }

            public static bool GerarQR(Invoices Invoice)
            {
                //tenta gerar o QR
                try
                {
                    QRCodeEncoder qrCodecEncoder = new QRCodeEncoder();
                    qrCodecEncoder.QRCodeBackgroundColor = System.Drawing.Color.White;
                    qrCodecEncoder.QRCodeForegroundColor = System.Drawing.Color.Black;
                    qrCodecEncoder.CharacterSet = "UTF-8";
                    qrCodecEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
                    qrCodecEncoder.QRCodeScale = 6;
                    qrCodecEncoder.QRCodeVersion = 0;
                    qrCodecEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;

                    Image imageQRCode;
                    //string a ser gerada
                    string data = "Invoice: " + Invoice.InvoicesID.ToString(); // QR gerado pelo ID do Invoice
                    imageQRCode = qrCodecEncoder.Encode(data);

                    //converte a imagem QR em byte[]
                    MemoryStream ms = new MemoryStream();
                    imageQRCode.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

                    imgQR = ms.ToArray();
                    ms.Dispose();

                    return true;
                }
                catch
                {
                    return false;
                }
            }        
        }

and here is this printing ocod that calls the class to generate QR

[Description("Imprime as etiquetas referente a nota fiscal.")]
        public static bool PrintLabels(List<Invoices> ListInvoices)
        {
            // Tenta fazer
            try
            {
                // Abre tela para escolher impressora
                System.Windows.Controls.PrintDialog printDialog = new System.Windows.Controls.PrintDialog();

                // Se foi selecionado uma impressora
                if (printDialog.ShowDialog() != true)
                {
                    // Retorna como falso
                    return false;
                }

                // Cria um nova impressao
                Prints print = new Prints(Prints.PaperType.Labels);
                // Para cada nota fiscal da lista
                foreach (Invoices Invoice in ListInvoices)
                {
                    // Para cada volume da nota fiscal
                    for (int i = 1; i <= Invoice.Volume; i++)
                    {
                        //gera o código QR
                        QRCode.GerarQR(Invoice);

                        #region Temp Impressoras argox não recebem a altura do papel por algum motivo
                        // Se for argox
                        if (printDialog.PrintQueue.FullName.Contains("Argox"))
                        {
                            // Recebe o tamanho do documento
                            print.fixedDocument.DocumentPaginator.PageSize = new Size(455, 1125);

                            // Adiciona o controle da impressora
                            print.AddControl(new Controls.Labels(Invoice, i, Invoice.Volume), new Thickness(1, 1, 0, 0));
                        }
                        #endregion
                        else
                        {
                            // Coloca uma margina na folha
                            print.PageElements.Margin = new Thickness(15, 0, 0, 0);

                            // Variavel para posicoes dos elementos
                            Thickness Margin = new Thickness(0, 0, 0, 0);

                            // Adiciona imagem
                            print.AddImage(Margin, Invoice.Affiliate.Picture, 65, 150);

                            // Salta um espaco
                            Margin.Left += 156;

                            // Adiciona texto
                            print.AddText(Invoice.Affiliate.Name.Trim(), Margin, 14, true, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 14;

                            // Adiciona texto
                            print.AddText(Invoice.Affiliate.Address.Street.Trim(), Margin, 11, false, HorizontalAlignment.Left);

                            //Salta um espaço
                            Margin.Top += 11;

                            // Adiciona texto
                            print.AddText(Invoice.Affiliate.Address.District.Trim() + " - " + Invoice.Affiliate.Phone1, Margin, 11, false, HorizontalAlignment.Left);

                            //Salta um espaço
                            Margin.Top += 11;

                            // Adiciona texto
                            print.AddText(Invoice.Affiliate.Address.City.FullName + " - " + Invoice.Affiliate.Address.CEP, Margin, 11, false, HorizontalAlignment.Left);

                            //Salta um espaço
                            Margin.Top = 67;
                            Margin.Left = 176;

                            // Adiciona texto
                            print.AddText("VOLUMES", Margin, 11, false, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 11;

                            // Adiciona texto
                            print.AddText(i.ToString("000") + "/" + Invoice.Volume.ToString(), Margin, 15, true, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 15;

                            // Adiciona texto
                            print.AddText("NOTA FISCAL", Margin, 11, false, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 10;

                            // Adiciona texto
                            print.AddText(Invoice.Number.ToString(), Margin, 15, true, HorizontalAlignment.Left);

                            // Define posicao x e y
                            Margin.Top = 0;
                            Margin.Left = 0;

                            // Salta um espaço
                            Margin.Top = 67;

                            #region Dados do remetente, destinatario e destino

                            // Adiciona texto
                            print.AddText("REMETENTE", Margin, 11, false, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 10;

                            // Adiciona texto
                            print.AddText(Invoice.Sender.Name.Trim(), new Thickness(Margin.Left, Margin.Top, 210, Margin.Bottom), 12, true, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 12;

                            // Adiciona texto
                            print.AddText("DESTINATÁRIO", Margin, 11, false, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 10;

                            // Adiciona texto
                            print.AddText(Invoice.Recipient.Name.Trim(), new Thickness(Margin.Left, Margin.Top, 210, Margin.Bottom), 12, true, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 12;

                            // Adiciona texto
                            print.AddText("DESTINO", Margin, 11, false, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 10;

                            // Adiciona texto
                            print.AddText(Invoice.DeliveryAddress.City.FullName, Margin, 12, true, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 12;

                            // Adiciona texto
                            print.AddText("COLETOR", Margin, 11, false, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 10;

                            // Adiciona texto
                            print.AddText(Invoice.PeopleName, Margin, 12, true, HorizontalAlignment.Left);

                            // Volta uma linha
                            Margin.Top -= 12;
                            #endregion

                            // Define posicao x e y
                            Margin.Top = 45;
                            Margin.Left = 240;

                            // Se não achou a filial
                            if (Invoice.DeliveryAddress.City.Affiliate == null)
                            {
                                // Retorna erro
                                throw new Exception("Cidade destino não atendida.");
                            }

                            // Adiciona texto
                            print.AddText(Invoice.DeliveryAddress.City.FullAbbreviation, Margin, 70, true, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 77;

                            // Adiciona texto
                            print.AddText("SETOR", Margin, 11, false, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 10;

                            // Adiciona texto
                            print.AddText(Invoice.Sector.ToString(), Margin, 20, true, HorizontalAlignment.Left);

                            // Salta um espaço
                            Margin.Top += 77;

                            // Define posicao x e y
                            Margin.Top = 0;
                            Margin.Left = 0;

                            // Salta um espaço
                            Margin.Top += 130;
                            Margin.Left += 300;

                            // Adiciona QR na etiqueta
                            print.AddImage(Margin, QRCode.imgQR, 50, 50);

                        }

                        // Adiciona a pagina
                        print.AddPage();
                    }
                }

                // Manda imprimir
                printDialog.PrintDocument(print.fixedDocument.DocumentPaginator, "Imprimir");

                // Retorna como feito
                return true;
            }
            // Pega o erro
            catch (Exception Error)
            {
                // Mostra mensagem de erro
                webTR.Controls.CustomWindows.ShowMessage(Error.Message);

                // Retorna como nao feito
                return false;
            }
        }

PS I'm axando that is my DLL ...

    
asked by anonymous 08.08.2016 / 15:59

0 answers