Hi,
When using the following code to read an appointment from a MS Exchange mailbox the application experiences a memory leak.
I can provide a test application that easily demonstrates the issue.
ADODB.Connection _Conn = new ADODB.Connection();
_Conn.Provider = "exoledb.datasource";
try
{
this.Cursor = Cursors.WaitCursor;
_Conn.Open("http://" + Environment.UserDomainName + "." + Environment.MachineName + "/Exchange/" + this.txtMailbox.Text + "/Calendar", "", "", 0);
CDO.Appointment cdoAppointment = new CDO.Appointment();
try
{
for (int i = 1; i < int.Parse(this.txtNoOfTestReads.Text); i++)
{
cdoAppointment.DataSource.Open("http://" + Environment.UserDomainName + "." + Environment.MachineName + "/Exchange/" + this.txtMailbox.Text + "/Calendar/" + this.txtApptFileName.Text + ".eml", _Conn, ADODB.ConnectModeEnum.adModeReadWrite, ADODB.RecordCreateOptionsEnum.adFailIfNotExists, ADODB.RecordOpenOptionsEnum.adOpenSource, "", "");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
cdoAppointment = null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (_Conn.State == (int)ADODB.ObjectStateEnum.adStateOpen)
_Conn.Close();
_Conn = null;
this.Cursor = Cursors.Default;
}
Regards,
Craig
I would post this to the exchange dl ->
http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.exchange.applications
This could just be a GC issue, try adding a line in the loop like below:
System.Gc.Collect();
System.Gc.WaitForPendingFinalizers();
Matt
No comments:
Post a Comment