エラー処理を担当するクラスがあります。デストラクタが呼ばれたら処理を実行したい。しかし、悲しいことに、プロセスは開始されませんでした。新しいプロセスは、いくつかの引数を指定して exe を呼び出し、電子メールを送信する必要があります。これが機能しないのはなぜですか?
~ErrorH()
{
if ((int)e > 0)
SendErrorMail();
}
private void SendErrorMail()
{
if (File.Exists("C:\\Program Files (x86)\\MailSend\\MailSend.exe"))
{
ProcessStartInfo mailsend = new ProcessStartInfo();
mailsend.FileName = "C:\\Program Files (x86)\\MailSend\\MailSend.exe";
mailsend.Arguments = "…";
Process.Start(mailsend);
}
}
SendErrorMail
たとえばコンストラクターで関数を実行すると、すべて正常に動作します。Process.Start(mailsend);
デバッガーを見ると、コマンドに到達したようです。何が悪かったのか?どうすればこれを修正できますか?
編集
さて、私はIDisposable
メソッドを使用しました。正常に動作しますが、正しく使用されていますか?
class ErrorH : IDisposable
{
private bool disposed = false;
...
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool desposing)
{
if(!this.disposed)
if ((int)e > 0)
SendErrorMail();
disposed = true;
}
私が使用するプログラムでは:
using (Parameter p = new Parameter(args[0]))
{
...
}
からのクラスErrorH
継承Parameter
。
グリーツ