我有一个windows程序,是与后台数据库有关的.
这个程序老是自己报错,开发的人早就找不到了.
而且这个程序不能关,现在有什么办法能让他一报错就自动重新启动呢?给个思路,我想用C#写个win服务来监控这个应用程序,但查不到资料,
怎么才能知道这个程序报错了呢??
能给段代码或资料都行呀.谢谢了....

解决方案 »

  1.   

    现在有什么办法能让他一报错就自动重新启动呢?
    -----------------------------------
    简单的做法直接在winservice处理,写日志再重起
    try
    {
        // dosth...
    }
    catch (Excepion ex)
    {
        // donot throw ex
        transation.RollBack();
        log(ex);
        .....
        // the service restart
        OnStart(urarg);
    }
      

  2.   

    没有原代码呀,只有个应用程序,如果有原代码早就改了....
    用winservice处理,不知怎么判断程序出错...
    他报的错是:弹出个窗口,内存不能为读,,,什么的...
      

  3.   

    晕呀,我写了个读日志的程序,在XP和2003上都正常.
    而服务器上是2000server,晕,竟然说网络路径不可用...晕呀....
    谁知道是怎么回事...
      

  4.   

    这样写的.eventlog.MachineName = whichmachine ;
    eventlog.Log = eventlogs.Items[eventlogs.SelectedIndex].Value.ToString();
    eventviewgrid.DataSource = eventlog.Entries; EventLogEntryCollection myCollection= eventlog.Entries;
      

  5.   

    在Process中查找这个程序的进程,如果消失了,就重新启动它。
      

  6.   

    如果是日志中报错,就用FileSystemMonitor来监控日志文件。
    如果是弹出式,就没有太好的办法了。只好监控他提供的服务,如果服务无法访问了,就强行关闭进程,再启动起来。
      

  7.   

    弹出窗口报内存不能为读,日志中也报错.
    我现在就是想监视日志,出现错误就关掉进程,重新打开.但服务器是2000server,晕呀,得不到系统日志.晕,还在查...
      

  8.   

    应该不是权限的问题,我先是用winform程序调试也过不去,同样的代码.
      

  9.   

    miqier(米琪儿) ( ) 信誉:100    Blog  2006-12-05 09:46:53  得分: 0  
     
     
       在Process中查找这个程序的进程,如果消失了,就重新启动它。
      
     
    正解,做个线程定期查看系统进程名称,如果消失了就启动它.
      

  10.   

    在vs 2005里,有个ServiceController控件,你可以把要监视的服务罗列出来,用Timer隔一段时间就用ServiceController去查看要监视的服务是否是处于运行状态,如果不是,则用ServiceController启动它。
      

  11.   

    程序报错,但进程并不消失.
    mapserver(杨东 http://mapserver.cnblogs.com)
    的方法,没试过,我查查看...
      

  12.   

    最佳路径:反编译修改
    什么Findwindow,Process监视、日志都不完美!
      

  13.   

    搞定,我的思路是:
    报错窗口的title,proc.ProcessName = "csrss"
    然后结束我的程序,再重新打开.
    谢谢,大家.结贴了.
    如果有相同问题的人可以给我发短信息.