启动进程:
private void startprocess()
{
try
if (!checkprocessexists())
process p = new process();
p.startinfo.filename = system.io.path.combine(application.startuppath, "datatool.exe");
p.startinfo.arguments = "datatool.exe";
p.startinfo.useshellexecute = true;
p.start();
p.waitforinputidle(10000);
}
catch (exception ex)
messagebox.show(ex.source + " " + ex.message);
private bool checkprocessexists()
process[] processes = process.getprocessesbyname("datatool");
foreach (process p in processes)
if (system.io.path.combine(application.startuppath, "datatool.exe") == p.mainmodule.filename)
return true;
return false;
结束进程:
private void killprocessexists()
process[] processes = process.getprocessesbyname("appstart");
if (system.io.path.combine(application.startuppath, "appstart.exe") == p.mainmodule.filename)
p.kill();
p.close();
}
有时再写的客户端软件中,使用到比如quartz.net 等定时作业调度组件时,
往往会出现自己的应用程序已经关闭了,但是进程还未结束,这时,需要在关闭窗口时的formclosed事件里加上下面的代码:
private void mainform_formclosed(object sender, formclosedeventargs e)
process current = process.getcurrentprocess();
process[] processes = process.getprocessesbyname(current.processname);
foreach (process process in processes)
if (process.id == current.id)
process.kill();
找到当前的应用程序进程,并结束他,就可以了。