当前位置:  开发笔记 > 编程语言 > 正文

如何确保在c#中完成两个进程

如何解决《如何确保在c#中完成两个进程》经验,为你挑选了1个好方法。

我有一个如下所示的应用程序,由另一个控制台应用程序通过一个Process.Start()方法(即通过两个参数)在一个循环中触发两次.这里有第三种方法Lastmethod();将发送邮件包含输出startfirst();startsecond();.但我不要在完成前两种方法之后,我不知道如何触发第三种方法.我设置了两个标志,但是通过发送部分结果的邮件(没有完成前两个方法)显示有些时候是正确的并且有时错误的结果

static void Main(string[] args)
{
    bool first = false;
    bool second = false;
    if (args[0] == "test")
    {
        startfirst();//time consuming process which will trigger internal child process
        first = true;
    }
    if (args[0] == "finish")
    {
        startsecond();//time consuming process which will trigger internal child process
        second =true;
    }
    if(first && second)
    {
        Lastmethod();
    }
        Console.ReadLine();
    }

    private static void Lastmethod()
    {
        //sending mail of the out put of startfirst(); and  startsecond(); method
    }

    private static void startsecond()
    {
        //time consuming first operation
    }

    private static void startfirst()
    {
        //time consuming second operation
    }
}   

编辑 假设如果我开始多次说10个相同的过程就像

for (int i=0;i<10;i++)
{
Process.Start("Process.exe");
}

我将如何检查完成情况?我应该WaitForExit在这里使用()



1> Martin Mulde..:

当您启动一个过程时,您可以通过两个选项等待它完成:

    Process.WaitForExit()方法.

    Process.Exited事件.

完成此过程后,您可以处理结果并使用它来发送电子邮件.

如果您想等待每个进程,请像这样修改您的代码.Al进程将等到上一个结束:

for (int i=0;i<10;i++)
{
    var process = Process.Start("Process.exe");
    process.WaitForExit();
}

如果您想等到所有进程都完成,请尝试此操作.所有进程将同时运行.

var processes = new List();
for (int i=0;i<10;i++)
{
    var process = Process.Start("Process.exe");
    processes.Add(process);
}
foreach(var process in processes)
    proccess.WaitForExit();

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有