gpt4 book ai didi

c# - 关于最空闲的 Windows 服务的问题

转载 作者:太空狗 更新时间:2023-10-30 00:08:26 24 4
gpt4 key购买 nike

我有一个 Windows 服务,旨在每天运行一次 2 分钟的作业。剩下的 23 点 58 分,它只是坐在那里看起来很漂亮。

我的问题首先与空闲时间有关:使用 Timer.Tick 还是 Thread.Sleep 更好?这些使用的资源有什么区别吗?

其次,在那段空闲时间里,如果有人关闭了 Windows 服务,我是否需要中断那些空闲线程以使程序干净地关闭,还是 Shutdown 会为我处理?

第三,我是否使用 Windows 服务找错了树?将记录放入 Windows Task Scheduler 似乎是有意义的,但我找不到使用 InstallShield 来执行此操作的方法,而 InstallShield 正是我们用来部署产品的工具。有更好的想法吗?

最佳答案

如果您使用 ThreadPool.QueueUserWorkItem 启动后台线程,我认为您可以在其中设置一个 Thread.Sleep,当您关闭该服务时,您不必对它执行任何操作。我认为 Timer Tick 会在它滴答时自动为你创建线程,所以如果你使用它,你将不得不做更少的事情(在这两个定时器滴答中,我认为匹配你想要更好地实现的目标所以会是更好的选择)。

这绝对感觉像是像您所说的调度程序可以更好地完成的事情。我不知道您是否可以直接在 InstallShield 中执行此操作,但也许您可以创建一个小的控制台应用程序,您可以根据命令行参数从安装程序运行它,或者与 Windows 任务计划 API - http://msdn.microsoft.com/enus/library/windows/desktop/aa383614(v=vs.85).aspx 对话。自行注册或完成您想要完成的工作(即 - 安装 - 按计划进行设置,没有 args 做您每天需要做的任何事情)。

我认为它是一个 C++ API,因此您可以执行一些 p/invoke,或者更好的是,在类 libaray 中使用一些托管 C++,并从基于 c# 的控制台应用程序中引用它。

关于c# - 关于最空闲的 Windows 服务的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8600683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com