控制台应用程序进程被调用两次

本文关键字:两次 调用 应用程序 进程 控制台 | 更新日期: 2023-09-27 18:15:48

我正在从Web表单调用控制台应用程序,它会发送电子邮件。在控制台代码的最后一个块中,发送一封带有成功电子邮件计数的确认电子邮件。

在运行时,生成两个确认邮件而不是一个;第一个总是有0个电子邮件计数,第二个有实际计数。

下面是Web表单中的调用代码:

ProcessStartInfo info = new ProcessStartInfo();
string arguments = String.Format(@"""{0}"" ""{1}""", 
    message.Subject.Replace(@"""", @""""""), 
    message.Body.Replace(@"""", @""""""));
info.FileName = MAILER_FILEPATH;
Process process = Process.Start(info.FileName, arguments);
Process.Start(info);

我做错了什么?

控制台应用程序进程被调用两次

您遇到的问题是您调用Process.Start两次;一次使用info对象(但不带参数),下一次使用文件名和参数overload。

你有两种方法来启动一个进程;你应该选择一个并坚持使用它:

ProcessStartInfo info = new ProcessStartInfo();
string arguments = String.Format(@"""{0}"" ""{1}""", 
    message.Subject.Replace(@"""", @""""""), 
    message.Body.Replace(@"""", @""""""));
info.FileName = MAILER_FILEPATH;
info.Arguments = arguments;
Process.Start(info);

ProcessStartInfo包含一个名为Arguments的属性,您可以为其添加参数;Process.Start的重载只取ProcessStartInfo对象。这就是我上面描述的方法。