Link to home
Start Free TrialLog in
Avatar of moosetracker
moosetracker

asked on

Email attachments - even after dispose no release?

in C# I have 6 attachments for emails going out.. 3 are built in crystal 3 are static handouts..
With both types after the run the pdf's can SOMETIMES not be able to be deleted or moved because someone has it open.. I made sure Crystal is closing & disposing at it's end, but I am sure it is the Attachment due to the fact the 3 static PDF's can also get locked.. After 15/30 minutes the resources unlock.. so sounds like a dispose problem.. But.. I dispose on the finally process of a try so if it aborts, it still should dispose.

Below is the code, attempting to abbrevate where not really part of attachment logic.




using System.Net.Mail;
:
:
    Attachment attachmentmsg1;
    Attachment attachmentmsg2;
    Attachment attachmentmsg3;
    Attachment attachmentmsg4;
    Attachment attachmentmsg5;
    Attachment attachmentmsg6;
:
:
        try
        {
            mMailMessage = new MailMessage();
            // Set the sender address of the mail message
            mMailMessage.From = new MailAddress("someone@comcast.net");

:
:
                SetAttachments();
                PrintBody();
:
:
                mMailMessage.Body = fullBody;

:               // Instantiate a new instance of SmtpClient
                SmtpClient mSmtpClient = new SmtpClient("smtp.comcast.net");
                // Send the mail message
                mSmtpClient.Send(mMailMessage);
                mSmtpClient = null;
            }

        }
        catch (Exception)
        {

            throw;
        }
        finally
        {
            attachmentmsg1.Dispose();
            attachmentmsg2.Dispose();
            attachmentmsg3.Dispose();
            attachmentmsg4.Dispose();
            attachmentmsg5.Dispose();
            attachmentmsg6.Dispose();
        }
    private void SetAttachments()
    {
       string strReportPath =  strAppPath + "Reports\\EmailRptPerUnit.rpt";
       string strReportPath2 = strAppPath + "Reports\\EmailRptUnitIndv.rpt";
        string UT = sglUnitInfo.UnitType.Trim();
        string UN = sglUnitInfo.UnitNo.Trim();
        string UnitRpt = PathForUnitAttachments + UT + UN + "UnitRpt.pdf";
        string IndvRpt = PathForUnitAttachments + UT + UN + "IndivRpt.pdf";
        string IndvRpt2 = PathForUnitAttachments + UT + UN + "IndivRpt.doc";
        string ReqTrains = PathForHandouts + "BasicLdrRequirements.pdf";
        string MissingForm = PathForHandouts + "FormForMissingCourses.pdf";
        string ProblemTracking = PathForHandouts + "GuideToTrackingProblems.pdf";
        try
        {
            dsUnitUntrained dsUT = new dsUnitUntrained();
            dsUnitCourses dsCo = new dsUnitCourses();

            crPdf.CreateEnglishPdf(strReportPath, UnitRpt, UT, UN, "CR_Email_Untrained", dsUT,"PDF");
            crPdf.CreateEnglishPdf(strReportPath2, IndvRpt, UT, UN, "CR_Email_Untrained", dsUT, "PDF");
            crPdf.CreateEnglishPdf(strReportPath2, IndvRpt2, UT, UN, "CR_Email_Untrained", dsUT, "doc");

            attachmentmsg1 = new Attachment(UnitRpt);
            mMailMessage.Attachments.Add(attachmentmsg1);
            attachmentmsg2 = new Attachment(IndvRpt);
            mMailMessage.Attachments.Add(attachmentmsg2);
            attachmentmsg3 = new Attachment(IndvRpt2);
            mMailMessage.Attachments.Add(attachmentmsg3);
            attachmentmsg4 = new Attachment(ReqTrains);
            mMailMessage.Attachments.Add(attachmentmsg4);
            attachmentmsg5 = new Attachment(MissingForm);
            mMailMessage.Attachments.Add(attachmentmsg5);
            attachmentmsg6 = new Attachment(ProblemTracking);
            mMailMessage.Attachments.Add(attachmentmsg6);

        }
        catch (Exception)
        {
            
            throw;
        }
    }

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Obadiah Christopher
Obadiah Christopher
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of moosetracker
moosetracker

ASKER

You are brilliently correct... I could of swore I checked that for close and/or dispose, and neither was present for that object..