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# 程序启动其他进程程序的更多相关文章
- 比较windows phone程序启动和android程序启动原理
windows phone 程序是如何启动的了,他和android程序有什么区别,我们重点从native code 层面来分析 在windows phone 程序启动的时候是: 在XAML中使用应用程 ...
- windows phone 8 新增功能:从一个应用程序启动另一个程序(file association 和 Protocol association两种方式)
一. 启动手机预装内置程序打开文件file association 这里以打开word文档为例子 string fileToLaunch = @"HelloKitty.docx"; ...
- IOS在一个程序中启动另一个程序
尽管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据.我们可以使用UIApplication类的openURL:方法从一个应用程序来 ...
- iOS -程序启动原理和UIApplication的介绍
一.UIApplication 简介 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个Application都有自 ...
- 文盘Rust -- 把程序作为守护进程启动
当我们写完一个服务端程序,需要上线部署的时候,或多或少都会和操作系统的守护进程打交道,毕竟谁也不希望shell关闭既停服.今天我们就来聊聊这个事儿. 最早大家部署应用的通常操作是 "nohu ...
- iOS程序启动过程
First, the function creates the main application object (step 3 in the flowchart). If you specify ni ...
- 【Android】应用程序启动过程源码分析
在Android系统中,应用程序是由Activity组成的,因此,应用程序的启动过程实际上就是应用程序中的默认Activity的启动过程,本文将详细分析应用程序框架层的源代码,了解Android应用程 ...
- iOS程序启动的过程及原理
iOS程序启动的过程及原理 文字部分 先执行main函数,main内部会调用UIApplicationMain函数 UIApplicationMain函数里面做了什么事情??? 1> 创建UIA ...
- Qt程序启动画面播放(gif与swf两种动画格式)
学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找 ...
随机推荐
- 九度oj题目1181:遍历链表
题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2600 解决:1125 题目描述: 建立一个升序链表并遍历输出. 输入: 输入的每个案例中第一行包括1个整数:n(1 ...
- Springboot - 集成 JPA
1.什么是 JPA? JPA就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 2. JPA 具有什么优 ...
- FZU 1921——栀子花开——————【线段树单点更新】
栀子花开 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 利用request、beautifulsoup、xml写多线程爬虫
# -*- coding:UTF-8 -*- import requests,time from collections import OrderedDict import threading fro ...
- Java对象的生命周期与作用域的讨论(转)
导读: Java对象的生命周期大致包括三个阶段:对象的创建,对象的使用,对象的清除.因此,对象的生命周期长度可用如下的表达式表示:T = T1 + T2 +T3.其中T1表示对象的创建时间,T2表示对 ...
- Javascript模块化编程详解
在这篇文章中,我将会回顾一下js模块化编程的基础,并且将会讲到一些真的非常值得一提的进阶话题,包括一个我认为是我自创的模式. 模块化编程是一种非常常见Javascript编程模式.它一般来说可以使得代 ...
- 深入理解JavaScript系列(14):作用域链(Scope Chain)
前言 在第12章关于变量对象的描述中,我们已经知道一个执行上下文 的数据(变量.函数声明和函数的形参)作为属性存储在变量对象中. 同时我们也知道变量对象在每次进入上下文时创建,并填入初始值,值的更新出 ...
- Linux防火墙/iptables使用
iptables是linux下的防火墙组件服务,这两天一直使用,总结一下使用方法: 1.检查iptables是否安装 rpm -qa|grep iptables 如果没有安装该组件,可以通过yum i ...
- 2、弹出窗口 Alert
1.只是弹出框 /* --- page1.html ---*/ <ion-navbar *navbar> <ion-title>Tab 1</ion-title> ...
- go语言中文处理
中文在go语言中占三个字节,len 或者 range 一个含中文的字符串跟我们预期的结果不一样 求长度用 utf8.RuneCountInString,遍历用 rune func main() { t ...