c# – 如何延迟关闭并在窗口服务中运行进程

c# – 如何延迟关闭并在窗口服务中运行进程,第1张

概述我必须运行一个进程,即 Windows关闭时的应用程序,是否有任何方法来延迟Windows关闭并在Windows服务中运行应用程序… protected override void OnShutdown(){ // Add your save code here // Add your save code here StreamWriter str = new Strea 我必须运行一个进程,即 Windows关闭时的应用程序,是否有任何方法来延迟windows关闭并在windows服务中运行应用程序…
protected overrIDe voID OnShutdown(){    // Add your save code here    // Add your save code here    StreamWriter str = new StreamWriter("D:\Log.txt",true);    str.Writeline("Service stoped due to on" + DateTime.Now.ToString());    str.Close();    base.OnShutdown();}

我使用上面的函数覆盖了关闭,我能够写一个日志条目到文本文件,但我之后无法运行应用程序在搜索时我发现延迟低于用户激活关闭后的几秒钟

this.RequestAdditionalTime(250000);

这给关闭事件添加时间延迟25秒,但我无法运行应用程序.任何人都可以提出方法或想法在关机时运行应用程序.

解决方法 在windows Vista中,应用程序阻止挂起的系统关闭的能力受到严格限制.有关详细信息,请参阅MSDN上的两篇方便文章: Shutdown Changes for Windows Vista和 Application Shutdown Changes in Windows Vista.

如该页面所示,您不应该依赖于阻止关机超过5秒的能力.如果您希望尝试阻止挂起的关闭事件,您的应用程序应使用新的ShutdownBlockReasonCreate function,它允许您注册一个字符串,向用户解释您认为应该阻止关闭的原因.用户保留注意您的建议并取消关机的能力,或者保持警惕并取消.

一旦您的应用程序完成不应该被关闭中断的任何 *** 作,您应该调用相应的ShutdownBlockReasonDestroy function,它释放原因字符串并指示系统现在可以关闭.

还要记住Windows Services now run in an isolated session并禁止与用户交互. My answer here还提供了更多细节,以及漂亮的图表.

基本上,这是不可能的. windows将为您在服务中启动一个单独的进程以及阻止挂起关闭的任何尝试而斗争.最终,用户可以覆盖您尝试拉动的任何内容.这听起来像你应该使用安全策略解决的问题,而不是在Server Fault上的应用程序问题.

总结

以上是内存溢出为你收集整理的c# – 如何延迟关闭并在窗口服务中运行进程全部内容,希望文章能够帮你解决c# – 如何延迟关闭并在窗口服务中运行进程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1239085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存