一些解释:对于我正在处理的项目,我必须编写一个在后台运行的程序,检测文件的更改,并将修改后的文件上传到Web服务,以供其他人使用。如果不是在用户修改大文件并在编辑后立即决定关闭其计算机的情况下,则非常简单的同步。
我可以取消上载,然后等待下一次重新启动来执行上载,但是我可以想象用户第二天早晨将文件从Web下载到另一台计算机,并且不理解为什么他昨晚的更改不存在。
因此,我的想法是检测用户何时注销或重新启动Windows,并且如果我正在上传过程中,只需询问用户“我们仍在同步Foo.txt刚更改的文件。确定要重新启动吗? ?您所做的更改只有在重新启动计算机后才会对其他人可用!”。如果用户拒绝,我需要取消重新启动/注销
这可能吗?
有一个称为的静态类SystemEvents,它公开了这种行为:
http://msdn.microsoft.com/zh-CN/library/microsoft.win32.systemevents.aspx
但是,它无法区分某些操作,也不会暂停OS进程超时防护。我使用了一次,但是注册表中配置的默认超时时间有点短,因此可能需要增加。
简而言之,这一切都让人觉得有些骇人听闻。