C# 程序启动其他进程程序

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# 程序启动其他进程程序

时间: 2024-10-05 12:42:00

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

腾讯精选面试重点问题:Android源码分析--应用程序启动

面试官:什么是应用程序启动 应用程序的启动,又可称为根Activity的启动.但是在讲应用程序启动之前,我们有必要对应用程序进程(AppProcess)启动有所了解,那是因为启动一个应用程序首先要保证该应用程序的进程已经被启动.AMS在启动应用程序时,会先检查应用程序进程是否存在,如果不存在就需要请求Zygote进程创建并启动应用程序进程.这里我不会贴上大段大段的代码,只是一些总结,并提供了相关源码的链接. 应用程序进程(AppProcess)启动 启动大纲 AMS发送启动应用程序进程请求. Z

iOS程序启动原理的理解

应用的生命周期(从启动到退出):当用户点击应用图标之后,应用就开始启动.应用启动完成后,就会展示一系列的视图,和用户进行各种各样的交互(如滑动.点击).当用户退出应用后,该应用就无法和用户进行交互.这一过程就是应用的生命周期体现. 在介绍应用启动过程及原理之前,先来了解一些概念以及其作用. 1.UIApplication UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序.每一个应用都有自己的UIApplication对象,而且是单例的,如果试图

Apache HTTPserver安装后报:无法启动,由于应用程序的并行配置不对-(已解决)

原创作品.出自 "深蓝的blog" 博客.欢迎转载,转载时请务必注明出处.否则有权追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46375453 安装Apache Http Server后报"应用程序无法启动,由于应用程序的并行配置不对"错误. 无法启动: 错误信息:应用程序无法启动,由于应用程序的并行配置不对.请參阅应用程序事件日志,或使用sxstrace.exe. 解决思路

【iOS程序启动与运转】- RunLoop个人小结

学习iOS开发一般都是从UI开始的,从只知道从IB拖控件,到知道怎么在方法里写代码,然后会显示什么样的视图,产生什么样的事件,等等.其实程序从启动开始,一直都是按照苹果封装好的代码运行着,暴露的一些属性和方法作为接口,是让我们在给定的方法里写代码实现自定义功能,做出各种各样的应用.这些方法的调用顺序最为关键,熟悉了程序运转和方法调用的顺序,才可以更好地操控程序和代码,尽量避免Xcode不报错又实现不了功能的BUG.从Xcode的线程函数调用栈可以看到一些方法调用顺序. 0 从程序启动开始到vie

[ios 程序启动与运转] - RunLoop个人小结

学习iOS开发一般都是从UI开始的,从只知道从IB拖控件,到知道怎么在方法里写代码,然后会显示什么样的视图,产生什么样的事件,等等.其实程序从启动开始,一直都是按照苹果封装好的代码运行着,暴露的一些属性和方法作为接口,是让我们在给定的方法里写代码实现自定义功能,做出各种各样的应用.这些方法的调用顺序最为关键,熟悉了程序运转和方法调用的顺序,才可以更好地操控程序和代码,尽量避免Xcode不报错又实现不了功能的BUG.从Xcode的线程函数调用栈可以看到一些方法调用顺序. --零--从程序启动开始到

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

在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程序的启动过程. 启动Android应用程序中的Activity的两种情景:其中,在手机屏幕中点击应用程序图标的情景就会引发Android应用程序中的默认Activity的启动,从而把应用程序启动起来.这种启动方式的特点是会启动一个新的进程来加载相应的Activity. 这里,我们以这个例子为例来说明

不错的linux下通用的java程序启动脚本(转载)

转自:http://www.cnblogs.com/langtianya/p/4164151.html 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的通用shell脚本. 只需要修改一些配置变量,就可以用来做起动脚本了. 并且除了能起动.还支持关闭.重启.查看是否正在运行的功能. 原文地址:http://www.tudaxia.com/archives/10 start函数中,nohup部分其实也

构建根文件系统之启动第一个程序(韦大仙)

u-boot的目的:启动内核 内核的目的:启动应用程序,而应用程序位于根文件系统上面.因此,需要构建根文件系统. 只需完成以上几步,就可以在单板上搭建出一个linux系统来. 问题:有那么多应用程序,内核启动后首相打开哪一个? 内核启动的时候,挂接好根文件系统之后,执行应用程序在init_post函数中. static int noinline init_post(void){ if (sys_open((const char __user *) "/dev/console", O_R

通过共享用户ID来实现多个应用程序使用同一个进程

从很多方面来看,每个Android 应用程序都存在于它自己的世界之中:• 默认情况下,每个应用程序均运行于它自己的Linux 进程中.当应用程序中的任意代码开始执行时,Android 启动一个进程,而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程.• 每个进程都运行于自己的Java 虚拟机(VM)中.所以应用程序代码实际上与其它应用程序的代码是隔绝的.• 默认情况下,每个应用程序均被赋予一个唯一的Linux 用户ID,并加以权限设置,使得应用程序的文件仅对这个用户.这个应用程序可