【问题标题】:Console Application Process Getting Called Twice控制台应用程序进程被调用两次
【发布时间】:2015-10-01 20:29:55
【问题描述】:

我正在从发送电子邮件群的 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 两次。
  • 所以我这里根本不需要 ProcessStartInfo 类?
  • ProcessStartInfo 没问题;只需选择该方法或其他方法;但你把两者混在一起了。

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


【解决方案1】:

您遇到的问题是您调用了两次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 对象。这就是我上面描述的方法。

【讨论】:

  • 感谢 George,修复了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 2013-09-15
  • 1970-01-01
相关资源
最近更新 更多