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.
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;
}
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER