控制台申请流程被称为两次

时间:2015-10-01 20:29:55

标签: c# asp.net console-application .net-4.6

我正在从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);

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您遇到的问题是您要拨打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个对象。这就是我上面描述的方法。