C#应用程序进程启动和关闭

有时候有种需求,一个进程只启动一个,且必须启动一个。

可以创建一个Windows服务,定时执行。每次执行时查询该应用程序进程的数量,如果没有,则启动一个,如果已启动多个,则只留一个

废话不多说,上代码:

 1  public class Class1
 2     {
 3        public void Main()
 4        {
 5            var obj=System.Diagnostics.Process.GetProcessesByName("Calc").ToList();
 6            if (obj.Count == 0)
 7                StartProcess();
 8            else if (obj.Count == 1)
 9                SystemLog.WriteLogLine("只有一个进程启动,无需操作");
10            else
11                KillProcess();
12                StartProcess();
13        }
14
15        public void StartProcess()
16        {
17            ProcessStartInfo info = new ProcessStartInfo();
18            info.FileName = @"D:\Calc.exe";
19            info.Arguments = "";
20            info.WindowStyle = ProcessWindowStyle.Minimized;
21            Process pro = Process.Start(info);
22            // pro.WaitForExit();
23        }
24        public void KillProcess()
25        {
26            Process current = Process.GetCurrentProcess();
27            Process[] processes = Process.GetProcessesByName("Calc");
28            foreach (Process process in processes)
29            {
30                if (process.ProcessName == "Calc")
31                    process.Kill();
32            }
33        }
34     }
时间: 2024-07-29 01:57:17

C#应用程序进程启动和关闭的相关文章

Android应用程序进程启动过程的源代码分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创建的应用程序进程具有两个特点,一是进程的入口函数是ActivityThread.main,二是进程天然支持Binder进程间通信 机制:这两个特点都是在进程的初始化过程中实现的,本文将详细分析Android应用程序进程创建过程中是如何实现这两个特点的. Android应用程序框架层创建的应用程序进程

WPF 程序中启动和关闭外部.exe程序

当需要在WPF程序启动时,启动另一外部程序(.exe程序)时,可以按照下面的例子来: C#后台代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; u

oracle的启动和关闭

oracle004 oracle相关的程序的启动与关闭: 关闭:EM.ISQLPLUS -->listener --> 数据库 isqlplusctl stop .emctl stop dbconsole  -->lsnrctl stop -->有两种方式: 1. dbstop 2. sqlplus as / sysdb --> shutdown immediate 开启:listener --> 数据库 ---> EM.ISQPLUS 数据库 start --&

C# 强制关闭当前程序进程(完全Kill掉不留痕迹)

C#代码   /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID /// </summary> /// <param name="command"></param> /// <returns></returns> public static string RunCmd(string command) { //實例一個Process類

Linux 下Tomcat的启动、关闭、杀死进程

Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.out #看tomcat的控制台输出: #看是否已经有tomcat在运行了 ps -ef |grep tomcat #如果有,用kill; kill -9 pid #pid 为相应的进程号 例如 pe -ef |grep tomcat 输出如下 sun 5

apacheFtpServer集成spring由web容器控制启动和关闭

ApacheFtpServer是一个100%纯Java实现的FTP服务器,基于网络框架apache MINA实现,可支撑多并发用户.FtpServer可以独立运行作为一个Windows服务或Unix/Linux守护进程,或嵌入到Java应用程序,提供对内部集成spring应用程序支持.下面介绍apacheFtpServer与spring集成,交由spring控制ApacheFtpServer的启动与关闭. 1.      初始化创建MyFtpServer: import java.io.File

程序只启动一个实例的几种方法

我们在使用<金山词霸>时发现,在<金山词霸>已经运行了的情况下,再次点击<金山词霸>的图标,那么它不会再运行另外一个<金山词霸>,而是将已有的<金山词霸>给激活,始终只能运行一个<金山词霸>的实例. 在我们的程序当中如果要实现类似<金山词霸>的功能,就要解决两个问题,首先是要判断该程序已有一个实例在运行,其次是要将已运行的应用程序实例激活,同时退出第二个应用程序实例.  对于第一个问题,我们可以通过设置命名互斥对象或命名信

MySQL 数据库的启动与关闭

MySQL数据库服务器通常指的的是mysqld,而命令行mysql则是mysql客户端程序,这两个概念通常容易混淆.通常启动mysql服务器即是启动mysqld进程,mysqld启动后,可以通过mysql连接到mysql服务器.本文主要描述了mysql服务器的几种启动方式以及如何关闭mysql服务器. 1.直接使用mysqld启动   mysqld 即是mysql服务器,可以调用该命令直接启动mysql服务器  mysqld 从配置文件中读取[mysqld]以及[server]选项组的内容,也可

oracle在windows下的批处理(启动与关闭)

启动: @echo offnet start OracleOraDb10g_home1TNSListenernet start OracleServiceORCLSIDnet start OracleDBConsoleorclsid 关闭: @echo offnet stop OracleDBConsoleorclsidnet stop OracleServiceORCLSIDnet stop OracleOraDb10g_home1TNSListener 本机开发时只需启动这3个服务即可.监听