c# – 在析构函数中执行新进程

c# – 在析构函数中执行新进程,第1张

概述我有一个负责错误处理的课程.如果调用析构函数,我想执行一个进程.但遗憾的是,这个过程不会开始.新进程使用一些参数调用exe,它应该发送一封电子邮件. 为什么这不起作用? ~ErrorH(){ if ((int)e > 0) SendErrorMail();}private void SendErrorMail(){ if (File.Exists("C:\ 我有一个负责错误处理的课程.如果调用析构函数,我想执行一个进程.但遗憾的是,这个过程不会开始.新进程使用一些参数调用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.

格尔茨

解决方法 不要使用无法保证在当前时间调用的析构函数,而是使用接口System.Idisposable.

通常,在C#中使用析构函数是一种不好的做法,例如.由于我们无法确定垃圾收集器(GC)会破坏对象的具体时间,因此C#提供了具有单个方法dispose的Idisposable,您可以在完成对象使用时显式调用它,也可以使用block隐式调用它.

总结

以上是内存溢出为你收集整理的c# – 在析构函数中执行新进程全部内容,希望文章能够帮你解决c# – 在析构函数中执行新进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存