c#

位置:IT落伍者 >> c# >> 浏览文章

C# 启动外部程序的几种方法


发布日期:2020年03月03日
 
C# 启动外部程序的几种方法

启动外部程序不等待其退出

启动外部程序等待其退出

启动外部程序无限等待其退出

启动外部程序通过事件监视其退出

// using SystemDiagnostics;

private string appName = calcexe;

/// <summary>

/// 启动外部程序不等待其退出

/// </summary>

private void button_Click(object sender EventArgs e)

{

ProcessStart(appName);

MessageBoxShow(StringFormat(外部程序 {} 启动完成! thisappName) thisText

MessageBoxButtonsOK MessageBoxIconInformation);

}

/// <summary>

/// 启动外部程序等待其退出

/// </summary>

private void button_Click(object sender EventArgs e)

{

try

{

Process proc = ProcessStart(appName);

if (proc != null)

{

procWaitForExit();

if (procHasExited) MessageBoxShow(StringFormat(外部程序 {} 已经退出! thisappName) thisText

MessageBoxButtonsOK MessageBoxIconInformation);

else

{

// 如果外部程序没有结束运行则强行终止之

procKill();

MessageBoxShow(StringFormat(外部程序 {} 被强行终止! thisappName) thisText MessageBoxButtonsOK MessageBoxIconExclamation);

}

}

}

catch (ArgumentException ex)

{

MessageBoxShow(exMessage thisText MessageBoxButtonsOK MessageBoxIconError);

}

}

/// <summary>

/// 启动外部程序无限等待其退出

/// </summary>

private void button_Click(object sender EventArgs e)

{

try

{

Process proc = ProcessStart(appName);

if (proc != null)

{

procWaitForExit();

MessageBoxShow(StringFormat(外部程序 {} 已经退出! thisappName) thisText

MessageBoxButtonsOK MessageBoxIconInformation);

}

}

catch (ArgumentException ex)

{

MessageBoxShow(exMessage thisText MessageBoxButtonsOK MessageBoxIconError);

}

}

/// <summary>

/// 启动外部程序通过事件监视其退出

/// </summary>

private void button_Click(object sender EventArgs e)

{

try

{

//启动外部程序

Process proc = ProcessStart(appName);

if (proc != null)

{

//监视进程退出

procEnableRaisingEvents = true;

//指定退出事件方法

procExited += new EventHandler(proc_Exited);

}

}

catch (ArgumentException ex)

{

MessageBoxShow(exMessage thisText MessageBoxButtonsOK MessageBoxIconError);

}

}

/// <summary>

///启动外部程序退出事件

/// </summary>

void proc_Exited(object sender EventArgs e)

{

MessageBoxShow(StringFormat(外部程序 {} 已经退出! thisappName) thisText

MessageBoxButtonsOK MessageBoxIconInformation);

上一篇:用C#做Windows Services

下一篇:ADO.NET的并行控制与数据存取沖突侦测