Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 控制台应用程序进程被调用两次_C#_Asp.net_Console Application_.net 4.6 - Fatal编程技术网

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

C# 控制台应用程序进程被调用两次,c#,asp.net,console-application,.net-4.6,C#,Asp.net,Console Application,.net 4.6,我正在从一个Web表单调用一个控制台应用程序,它会发出一个电子邮件爆炸。在控制台代码的最后一块中,将发送一封确认电子邮件,其中包含成功电子邮件的数量 在运行期间,将生成两封确认邮件,而不是一封;第一个始终具有0电子邮件计数,第二个具有实际计数 以下是Web表单中的调用代码: ProcessStartInfo info = new ProcessStartInfo(); string arguments = String.Format(@"""{0}"" ""{1}""", messa

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

我做错了什么?

您遇到的问题是您正在调用
进程;一次使用
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
对象。这就是我上面描述的方法。

好吧,当然是从两次开始;您正在调用
Process.Start
两次。因此,这里根本不需要ProcessStartInfo类?ProcessStartInfo很好;要么选择那种方法,要么选择另一种方法;但是你把这两者混在一起了。谢谢乔治,这就解决了问题。