就是做一个程序A,通过这个程序A判断另一个程序B是否在运行,如果在程序B运行则程序A无反应,如果监控到程序B的线程停止,则程序A触发程序B使程序B重新启动,这应该怎么做,新手大家帮帮忙,项目挺急的....
  如果有人能一次解决追加20分...

解决方案 »

  1.   


     public static bool IsAppStart(String AppName,String AppPath)
            {            
                    System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName(AppName);
                    foreach (System.Diagnostics.Process myProcess in myProcesses)
                    {                    string ProcessFile = myProcess.Modules[0].FileName;
                        FileInfo Myfile = new FileInfo(ProcessFile);
                        if (Myfile.DirectoryName.ToLower() == AppPath.ToLower())
                        {
                            return true;
                        }
                    }            
                return false;
    }
      

  2.   

    循环所有的进程,然后找匹配B的进程,有了返回true,否则false
      

  3.   

    按ctrl+j可以看到每个函数的用法的。
      

  4.   

    项目这两天就要交了,BOSS临时提出了要做这么一个监控线程的东西,看书来不及了,我只想快点解决了,等把这个交完了再回头好好学习下,我现在就是想实现一个简单的监控一个线程的程序,当线程关闭的话就给重启就行,就这么一个简单的功能...
      

  5.   

    关键是如何在A中判断B的状态,B中首先需要能定时做一件事情,比如定时更新一个值,然后在A中访问这个值,检查这个值的变化,从而判断B是否死掉了。这样做需要使用共享内存一类的机制。
    或者直接在B中定时给A发Windows消息,A中定时检测B是否在一定时间内发来了消息
      

  6.   

    还有我如何判断呢,比如判断if(??=true),??里我应该写什么?
      

  7.   

    public static bool IsAppStart(String AppName,String AppPath)
            {            
                    System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcessesByName(AppName);
                    foreach (System.Diagnostics.Process myProcess in myProcesses)
                    {                    string ProcessFile = myProcess.Modules[0].FileName;
                        FileInfo Myfile = new FileInfo(ProcessFile);
                        if (Myfile.DirectoryName.ToLower() == AppPath.ToLower())
                        {
                            return true;
                        }
                    }            
                return false;
    }这段代码实现的效果是什么?还有返回值被谁接收?
      

  8.   

    问题自己找人解决了,为了让后面的看贴子的人明白我解释一下
    bool isHave = false;
                Process[] myProcesses = System.Diagnostics.Process.GetProcesses();//查看所有进程并放到数组myProcesses里
                foreach (Process myProcess in myProcesses)//从进程里一个一个读出并在下面的if语句里与“”里的内容比对
                {
                    if ("ProcessMonitoring" == myProcess.ProcessName)
                    {
                        isHave = true;//如果为true则退出
                        break;
                    }
                }            if (!isHave)//如果不存在,则进行相应的操作
                {
                  //写相应的操作  
                    
                         }