在进程APP1中创建并打开新进程APP2,同时隐藏进程APP1;如果关闭新进程APP2后,再显示APP1,怎么处理?敬清高手指教
在进程APP1中创建并打开新进程APP2,同时隐藏进程APP1;如果关闭新进程APP2后,再显示APP1,怎么处理?敬清高手指教
首先,我的用法如下:
string filename = System.IO.Path.GetFullPath(@"*.exe") ; ///新进程
process.StartInfo.FileName = filename ;
process.Start(); ///新进程显示
this.Hide() ; ///旧的进程隐藏
if( process.HasExited ) ///判断新进程是否关闭
this.Show() ; ///旧的进程重新显示
很明显,由于在新的进程process中停留时间稍长,if( process.HasExited )就会判断成process进程还在运行着,从而即使再关闭process,旧的进程仍然被隐藏
所以,我现在的问题是: 什么时候判断新进程被关闭比较合适?
问题点数:50、回复次数:5Top
1 楼xyy2(爱)回复于 2006-07-04 08:22:07 得分 0
我在
if( process.HasExited ) ///判断新进程是否关闭
this.Show() ;
前加上延时System.Threading.Thread.Sleep(5000);
那么在五秒内关闭APP2进程,则APP1进程可以重新显示;过了五秒就不起作用了
请问谁有什么办法,或者在APP2进程关闭时调用某个函数来显示APP1进程,或者通过托管来调用,具体怎么操作?我有点疑惑,不知道怎么办才好Top
2 楼sxlfybb(房客)回复于 2006-07-04 08:31:34 得分 0
进程?应用程序?你的概念不清吧?
需要有个中间交换的应用程序Top
3 楼xyy2(爱)回复于 2006-07-04 22:30:30 得分 0
什么样的中间交换程序呢?Top
4 楼Knight94(愚翁)回复于 2006-07-05 08:37:31 得分 0
如果app2是你写的,那么使用Mutex类来进行控制。
首先,修改app2得main函数,大致如下:
Mutex mUnique = new Mutex( false, "UniqueName" );//Replace it with a unique string
mUnique.WaitOne();
//Run your app here
mUnique.ReleaseMutex();
然后在app1中如下即可:
string filename = System.IO.Path.GetFullPath(@"*.exe") ; ///新进程
process.StartInfo.FileName = filename ;
process.Start(); ///新进程显示
this.Hide() ; ///旧的进程隐藏
Thread.Sleep(1000);// Sleep current process to run new process
Mutex mUnique = new Mutex( false, "UniqueName" );
mUnique.WaitOne();///wait new process till its end
this.Show() ; ///旧的进程重新显示
mUnique.ReleaseMutex();
Top
5 楼Knight94(愚翁)回复于 2006-07-05 08:38:28 得分 50
Caution:
the "UniqueName" strings in different places must be the sameTop




