专栏首页c#学习笔记C#学习笔记——启动其他进程

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);
        }
    }
}

方法二:

 var processInfo = new ProcessStartInfo(fullName);
    processInfo.UseShellExecute = false;
    processInfo.WorkingDirectory = Path.GetDirectoryName(fullName);
    Process.Start(processInfo);

方法三:

internal Process processKeyBoard;
processKeyBoard = Process.Start("osk.exe"); //osk.exe为系统的键盘程序的进程名称

查看进程名称可以通过右键该程序,查看所在文件夹,再查看属性

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 《C++ Primer》学习笔记:3.3.3其他vector操作

    《C++ Primer》(第五版)中计算vector对象中的索引这一小节中,举例要求计算各个分数段各有多少个成绩。 代码如下: #include <iostre...

    希希里之海
  • 笔记:Zygote和SystemServer进程启动过程

    简述 Android设备启动过程中,先是Linux内核加载完,接着Android中的第一个进程init启动,它会启动一些需要开机启动的进程。 Zygote就是...

    用户1172465
  • Linux学习笔记之Linux启动引导过程

    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化...

    Jetpropelledsnake21
  • Python3学习笔记 | 十、Python的类型与运算-其他

    集合的元素可以是不可变对象:数字、字符串、元祖、frozenset。集合里的元素是不重复的。

    TeamsSix
  • Python 学习笔记 - 多进程和进程

    前面学习了多线程,接下来学习多进程的创建和使用。多进程更适合计算密集型的操作,他的语法和多线程非常相像,唯一需要注意的是,多线程之间是可以直接共享内存数据的;但...

    py3study
  • python学习笔记:多进程

    我们现代的操作系统,都是支持“多任务”的操作系统,对于操作系统来说,一个任务就是一个进程(process)。比如打开一个浏览器就是启动一个浏览器进程。

    python学习教程
  • C#学习笔记——线程传参

    如果使用了ParameterizedThreadStart委托,线程的入口必须有一个object类型的参数,且返回类型为void。且看下面的例子:

    vv彭
  • Linux学习笔记之Linux启动级别

    对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等。但是通常我...

    Jetpropelledsnake21
  • C++学习笔记9——嵌套if语句及其练习

    案例需求: 1.提示用户输入一个高考考试分数,根据分数做如下判断 2.分数如果大于600分视为考上一本,大于500分考上二本,大于400考上三本,其余视为未考上...

    用户7886150
  • Spring源码学习笔记(12)——IoC容器启动流程

    IoC容器的启动和刷新方法在AbstractApplicationContext中定义,即refresh()方法:

    张申傲
  • redis 学习笔记(1)-编译、启动、停止

    一、下载、编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先到这里下载...

    菩提树下的杨过
  • Redis 学习笔记 2.2 启动和停止 redis

    redis 安装完成之后会有6个 redis 相关程序,我们最常用的是 redis-cli 和 redis-server。redis-server 是服务器,r...

    twowinter
  • Python学习笔记(七)——进程和线程

    很多时候,子进程并不是自身,而是一个外部进程。我们创建了子进程后,还需要控制子进程的输入和输出。

    蛮三刀酱
  • Python 学习笔记 | 多进程爬虫

    前段时间学习了多线程,但在实际的情况中对于多线程的速度实在不满意,所以今天就来学学多进程分布式爬虫,在这里感谢莫烦的Python教程。

    TeamsSix
  • ELK学习笔记之Elasticsearch启动常见错误

    修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效

    Jetpropelledsnake21
  • ES[7.6.x]学习笔记(一)Elasticsearch的安装与启动

    Elasticsearch是一个非常好用的搜索引擎,和Solr一样,他们都是基于倒排索引的。今天我们就看一看Elasticsearch如何进行安装。

    小忽悠
  • Redis 学习笔记 安装/启动/测试/配置

    Redis 客户端有很多,C# 的就有很多可供选择,可以参考 https://redis.io/clients#c

    李郑
  • ES7学习笔记(一)Elasticsearch的安装与启动

    Elasticsearch是一个非常好用的搜索引擎,和Solr一样,他们都是基于倒排索引的。今天我们就看一看Elasticsearch如何进行安装。

    小忽悠
  • Cypress 启动本地浏览器的学习笔记

    文档地址:https://docs.cypress.io/guides/guides/launching-browsers

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券