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

Console Application Process Getting Called Twice

我正在从发送电子邮件群发的 Web 窗体调用控制台应用程序。在控制台代码的 finally 块中,发送了一封确认电子邮件,其中包含成功电子邮件的计数。

在运行期间,生成了两封确认邮件,而不是一封;第一个始终有 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 对象(但没有参数),下一次使用文件名和参数重载。

您有两种启动进程的方法;你应该选择一个并坚持下去:

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 对象。这就是我上面描述的方法。