SmtpMailMessageオブジェクトの送信を処理する小さなSmtpSenderクラスを作成しました。メッセージが送信されたとき、または送信に失敗したとき、ユーザーが送信しようとした元のMailMessageと、成功/失敗のブール値およびエラー文字列を持つ'response'オブジェクトを含むデリゲートを発生させます。その後、ユーザーは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
}