오류 처리를 담당하는 클래스가 있습니다. 소멸자가 호출되면 프로세스를 실행하려고합니다. 그러나 슬프게도 프로세스가 시작되지 않습니다. 새로운 프로세스는 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]))
{
...
}
Parameter
에서 클래스 ErrorH
상속.
Greetz
소멸자에'mbox'를 표시하려고 했습니까 ?? GC에 의해 아직 호출되지 않았을 수도 있습니다. –
소멸자는 객체가 가비지 수집 될 때 호출되어야합니다. 따라서 프로그램 수명주기 동안 발생하는 것을 보장 할 수 없습니까? –
아니요, 실제로 테스트 해 보았습니다. MessageBox가 나타납니다. – hofmeister