When I am drawing line and then iterate in for loop it cause high memory leak then after several line it crashed.
private Pen ReDrawFromGrid(Pen pen)
    {
        for (int parseDgV = 0; parseDgV < dataGridView1.Rows.Count; parseDgV++)
        {
            float redrawX1;
            float redrawY1;
            float redrawX2;
            float redrawY2;
            float.TryParse(dataGridView1.Rows[parseDgV].Cells[0].Value.ToString(), out redrawX1);
            float.TryParse(dataGridView1.Rows[parseDgV].Cells[1].Value.ToString(), out redrawY1);
            float.TryParse(dataGridView1.Rows[parseDgV].Cells[2].Value.ToString(), out redrawX2);
            float.TryParse(dataGridView1.Rows[parseDgV].Cells[3].Value.ToString(), out redrawY2);
            if (dataGridView1.Rows[parseDgV].Cells[5].Value.ToString() == "Solid")
            {
                dashRedraw = new float[1] { 10 };
            }
            else if (dataGridView1.Rows[parseDgV].Cells[5].Value.ToString() == "Dash")
            {
                dashRedraw = new float[2] { 10, 10 };
            }
            else if (dataGridView1.Rows[parseDgV].Cells[5].Value.ToString() == "Dot")
            {
                dashRedraw = new float[2] { 3, 5 };
            }
            else
            {
                dashRedraw = new float[1] { 10 };
            }
            pen = new Pen(dataGridView1.Rows[parseDgV].Cells[4].Style.BackColor);
            pen.DashPattern = dashRedraw;
            g.DrawLine(pen, redrawX1, redrawY1, redrawX2, redrawY2);
            this.Refresh();
            this.axDNVideoX1.Invalidate();
        }
        GC.Collect();
        return pen;
    }
I tried to put dispose before and after in this for loop but it resulted no line drawn. How can I iterate draw line without causing memory leak?
Thanks for your help!