Я создал небольшой класс SmtpSender, который обрабатывает отправку объекта Smtp MailMessage.Когда сообщение было отправлено или не удалось отправить, я вызываю делегата, который содержит объект «response», который имеет исходное сообщение MailMessage, которое пользователь пытался отправить вместе с логическим значением success / fail и строкой ошибки.Затем пользователь может повторно отправить объект MailMessage в класс отправителя, чтобы попытаться еще раз, если он пожелает.
Что я хочу знать, это ... если я вызову делегата, который содержит объект с неуправляемыми ресурсами, мне нужночтобы затем располагать объект в текущей области?Если так, то вызов Dispose для него в текущей области уничтожит объект, который получает функция делегата?Я обеспокоен утечками памяти в долгосрочной перспективе.
Любой совет или помощь будет принята с благодарностью.Заранее спасибо!
Дэйв
public delegate void SmtpSenderSentEventHandler(object sender, SmtpSendResponse theResponse);
public class SmtpSendResponse : IDisposable
{
#region Private Members
private MailMessage _theMessage;
private bool _isSuccess;
private string _errorMessage;
#endregion
#region Public Properties
public MailMessage TheMessage
{
get { return _theMessage; }
set { _theMessage = value; }
}
public bool IsSuccess
{
get { return _isSuccess; }
set { _isSuccess = value; }
}
public string Error
{
get { return _errorMessage; }
set { _errorMessage = value; }
}
#endregion
#region Constructors
public SmtpSendResponse(MailMessage theMessage, bool isSuccess)
: this(theMessage, isSuccess, null)
{ }
public SmtpSendResponse(MailMessage theMessage, bool isSuccess, string errorMessage)
{
_theMessage = theMessage;
_isSuccess = isSuccess;
_errorMessage = errorMessage;
}
#endregion
#region IDisposable Members
public void Dispose()
{
if (_theMessage != null)
{
_theMessage.Attachments.Dispose();
_theMessage.Dispose();
}
}
#endregion
}