none
关于Windows 服务 ServiceBase 的方法 OnShutdown()问题 RRS feed

  • 问题

  • 开发环境如下:
     Windows XP
     VS 2005 
     DB:PostgreSQL
     
     以上环境都安装在本地机器上,也就是说 DB 和 服务部署在一台机器。
    现在想在 关闭计算机前执行一些 DB 更新记录的动作,但是在OnShutdown() 方法内执行的时候
    有问题,感觉由于点击关闭按钮后 PostgreSQL 数据库会先停止服务,这样程序将无法访问DB 造成
    出现错误信息。哪位知道有什么办法解决么?
    在网上搜了一下 没有发现在 OnShutdown() 前还会执行哪些别的方法,又没有别的解决方案呢,只要
    能让在点击 系统的 "Restart" 或者 "关闭" 后能够让Windows Service先执行更新DB数据的动作,然后再关闭计算机就可以。
    2010年10月8日 3:30

答案

  • 你好,请参考http://technet.microsoft.com/zh-cn/sqlserver/system.serviceprocess.servicebase.onshutdown.aspx 此方法在操作系统关闭时发生,在系统关闭时其它服务也会关闭,除了必要的依赖项之外,它们的关闭时间并无先后顺序可言,所以你说的情况是可能发生的,你可以先将日志信息写在文本中,或者系统日志中
    I see you~,.NET交流群71840452 微软中文论坛同城社区成都QQ群:74268428http://hi.baidu.com/1987raymondMy Blog~~~
    2010年10月11日 0:58
    版主

全部回复

  • 你好,请参考http://technet.microsoft.com/zh-cn/sqlserver/system.serviceprocess.servicebase.onshutdown.aspx 此方法在操作系统关闭时发生,在系统关闭时其它服务也会关闭,除了必要的依赖项之外,它们的关闭时间并无先后顺序可言,所以你说的情况是可能发生的,你可以先将日志信息写在文本中,或者系统日志中
    I see you~,.NET交流群71840452 微软中文论坛同城社区成都QQ群:74268428http://hi.baidu.com/1987raymondMy Blog~~~
    2010年10月11日 0:58
    版主
  • 最好设置一个服务,后台每隔一定时间检测是否有更新。在OnShutDown事件中更新因为不确定谁会被关闭。是随机的。

    或者你设法用NET中相关服务方面的类,判断某个SQL的服务是否处于打开状态,再做处理。

    :)

    2010年10月11日 3:48
    版主