1  启动一个独立进程,需要用到的命名空间是:using System.Diagnostics;   进程类是 Process ,进程的相关参数信息类是 ProcessStartInfo

2  等待启动的控制台app代码:

using System;
using System.Threading;
namespace ShowConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("app start!");
            foreach (string item in args)
            {
                Console.WriteLine(" accept a arg that is {0}", item);

Thread.Sleep(3000);             
            }

Console.WriteLine("app stop!");
        }
    }
}

3  启动模式:  并行和串行模式,注意比较代码区别。

using System;
using System.Threading;
using System.Diagnostics;

namespace HDTest
{
    class Program
    {
        static void Main(string[] args)
        {

for (int i = 0; i < 2; i++)
           {
               //并行: 多个同命实例进程一起执行
               RunMutilInstanceProcess(i);

//串行,一个进程启动结束后,运行下一个
             //  WaitSonProcess(i);

Thread.Sleep(2000);

}

Console.ReadLine();
        }

static void RunMutilInstanceProcess(int i)
        {
            string appPath = @"E:\VS2010Code\AppTest\ShowConsoleApp\bin\Debug\ShowConsoleApp.exe";
            ProcessStartInfo process = new ProcessStartInfo();
            process.FileName = appPath;
            process.Arguments = "process " + i.ToString();

process.UseShellExecute = false;
            process.CreateNoWindow = true;

process.RedirectStandardOutput = true;
            Process.Start(process);

// string Result = p.StandardOutput.ReadToEnd();
           // Console.WriteLine("the console app output is {0}", Result);
             Console.WriteLine(" process {0} start", i);
        }

static void WaitSonProcess(int i)
        {
            Process process = new Process();
            string appPath = @"E:\VS2010Code\AppTest\ShowConsoleApp\bin\Debug\ShowConsoleApp.exe";
            process.StartInfo.FileName = appPath;
            process.StartInfo.Arguments = "process " + i.ToString();

process.StartInfo.UseShellExecute = false;
            process.StartInfo.CreateNoWindow = true;

process.StartInfo.RedirectStandardOutput = true;

// process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            // Start the process
            process.Start();

Console.WriteLine(" process {0} start", i);
            // Wait that the process exits
             process.WaitForExit();

Console.WriteLine("the process  had exits");

// Now read the output of the DOS application
            string Result = process.StandardOutput.ReadToEnd();

Console.WriteLine("the console app output is {0}", Result);
        }
    }
}

C# 程序启动其他进程程序的更多相关文章

  1. 比较windows phone程序启动和android程序启动原理

    windows phone 程序是如何启动的了,他和android程序有什么区别,我们重点从native code 层面来分析 在windows phone 程序启动的时候是: 在XAML中使用应用程 ...

  2. windows phone 8 新增功能:从一个应用程序启动另一个程序(file association 和 Protocol association两种方式)

    一. 启动手机预装内置程序打开文件file association 这里以打开word文档为例子 string fileToLaunch = @"HelloKitty.docx"; ...

  3. IOS在一个程序中启动另一个程序

    尽管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据.我们可以使用UIApplication类的openURL:方法从一个应用程序来 ...

  4. iOS -程序启动原理和UIApplication的介绍

    一.UIApplication 简介       (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个Application都有自 ...

  5. 文盘Rust -- 把程序作为守护进程启动

    当我们写完一个服务端程序,需要上线部署的时候,或多或少都会和操作系统的守护进程打交道,毕竟谁也不希望shell关闭既停服.今天我们就来聊聊这个事儿. 最早大家部署应用的通常操作是 "nohu ...

  6. iOS程序启动过程

    First, the function creates the main application object (step 3 in the flowchart). If you specify ni ...

  7. 【Android】应用程序启动过程源码分析

    在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程 ...

  8. iOS程序启动的过程及原理

    iOS程序启动的过程及原理 文字部分 先执行main函数,main内部会调用UIApplicationMain函数 UIApplicationMain函数里面做了什么事情??? 1> 创建UIA ...

  9. Qt程序启动画面播放(gif与swf两种动画格式)

    学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找 ...

随机推荐

  1. 九度oj题目1181:遍历链表

    题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2600 解决:1125 题目描述: 建立一个升序链表并遍历输出. 输入: 输入的每个案例中第一行包括1个整数:n(1 ...

  2. Springboot - 集成 JPA

    1.什么是 JPA? JPA就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 2. JPA 具有什么优 ...

  3. FZU 1921——栀子花开——————【线段树单点更新】

    栀子花开 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  4. 利用request、beautifulsoup、xml写多线程爬虫

    # -*- coding:UTF-8 -*- import requests,time from collections import OrderedDict import threading fro ...

  5. Java对象的生命周期与作用域的讨论(转)

    导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对 ...

  6. Javascript模块化编程详解

    在这篇文章中,我将会回顾一下js模块化编程的基础,并且将会讲到一些真的非常值得一提的进阶话题,包括一个我认为是我自创的模式. 模块化编程是一种非常常见Javascript编程模式.它一般来说可以使得代 ...

  7. 深入理解JavaScript系列(14):作用域链(Scope Chain)

    前言 在第12章关于变量对象的描述中,我们已经知道一个执行上下文 的数据(变量.函数声明和函数的形参)作为属性存储在变量对象中. 同时我们也知道变量对象在每次进入上下文时创建,并填入初始值,值的更新出 ...

  8. Linux防火墙/iptables使用

    iptables是linux下的防火墙组件服务,这两天一直使用,总结一下使用方法: 1.检查iptables是否安装 rpm -qa|grep iptables 如果没有安装该组件,可以通过yum i ...

  9. 2、弹出窗口 Alert

    1.只是弹出框 /* --- page1.html ---*/ <ion-navbar *navbar> <ion-title>Tab 1</ion-title> ...

  10. go语言中文处理

    中文在go语言中占三个字节,len 或者 range 一个含中文的字符串跟我们预期的结果不一样 求长度用 utf8.RuneCountInString,遍历用 rune func main() { t ...