2012-05-18 31 views
0

我跑出去的想法关闭,不能因此在这里找到关于它的任何引用我去后,立即... 我需要保持辅助应用程序至极是不相关的我的C#项目总是在后台运行。因此,如果这个辅助应用程序崩溃或其他人手动关闭它,它会自动通过我的c#应用程序重新启动。如何重新打开文件时,它通过我的C#应用​​程序

我不知道该怎样来完成这一个线索,我的意思是检查,如果该应用程序关闭通过我的C#应用​​程序外在的东西。

任何帮助将不胜感激。 在此先感谢。

+0

如果,用户首先杀死你的C#应用​​程序,然后关闭其他应用程序 – Ramesh

+0

@Ramesh如果用户关闭我的C#应用​​程序,然后在其他应用程序不会再重新启动。此特定行为只能在我的应用程序运行时发生。我真的需要一些代码行例子。 – MikVal

回答

2

下面的代码是在C#,它是一个WinForm内部。

private void Form1_Load(object sender, EventArgs e) 
    { 
     Process p = Process.GetProcessesByName("Notepad")[0]; 
     p.EnableRaisingEvents = true; 
     p.Exited += new EventHandler(p_Exited); 
    } 

    void p_Exited(object sender, EventArgs e) 
    { 
     MessageBox.Show("Exit"); 
    } 

它看起来与名称的记事本&一个过程检索它的第一个实例。它将EnableRaisingEvents设置为true并挂钩到Exited事件。每当记事本关闭时,它都会显示警报。

基于这个逻辑,你可以构建你的应用程序。

+0

谢谢,我会试一试! – MikVal

+0

+1,非常好。不需要轮询进程列表 – Steve

+0

@Ramesh如果你有这么好的话,我还有一个问题,你上面提供的代码工作正常,但如果第二次应用程序关闭了第二次,那么它将无法工作。我应该添加什么,然后使它以这种方式工作? – MikVal

0

您可以使用FileSystemWatcher让其他应用程序修改该文件的手表。

FileSystemWatcher的有类似改变,创建,重命名,删除,它可以订阅跟踪文件更改的事件。

1

作为一种解决方案,您可以使用Windows服务调用您始终运行的应用程序。
您可以使该服务从应用程序捕获错误返回代码,并根据错误重新启动它。

1

可以保持如果它正在运行或在vb.net

不使用过程类对于各个p作为处理在Process.GetProcessesByName(“通信器”) 的ShowWindow检查的处理(p.MainWindowHandle,SHOW_WINDOW .SW_NORMAL) 下一个p

,如果你要的不是在矿井名单的过程中,你可能会再次启动。 阿希什库马尔

1

最简单的方法是运行一个计时器,并在记号事件,使用 -

if (Process.GetProcessesByName("communicator").Count() == 0) 
{ 
    Process.Start("communicator.exe"); 
} 
+0

我一开始是这么想的,但也许它不会消耗太多的资源,因为它总是在计时器结束时检查运行的实例吗? – MikVal

相关问题