与任务调度程序或任务管理器相比,窗口服务如何在内部工作?

时间:2016-11-23 18:59:36

标签: c# windows-services taskmanager taskscheduler

我是一名从事网络应用程序工作的.net开发人员,过去几个月我开始研究Windows应用程序,一个应用程序需要每天中午12点运行,所以我在google的帮助下编写了一个Web服务,它正在运行细

但我只是想知道Windows服务是如何工作的。 我阅读了很多帖子而没有人回答我的问题。所以我用自己的话来说。

根据我对Web服务的理解,我使用计时器创建一个调度程序,该计时器全部运行24小时,并在满足计时器条件时执行必要的代码。

在调度程序中,我配置一个调度程序,在满足时间条件时运行一个应用程序(在以前的情况下是一个服务)。

现在我的问题:

  1. 关于RAM使用情况?

    我知道服务使用RAM。但考虑到我的代码是否很重,我们考虑10mb。 Ther fore.exe文件大约为10mb或更多。因此,当服务启动时它会在24小时内使用10mb的RAM,或者它只会创建服务中的调度程序,这将非常小,然后在满足时间时加载服务代码?

    考虑调度程序如何工作。我认为会有一个触发器在遇到时间时触发并触发触发器将执行.exe文件通常让我称之为服务(但它是一个应用程序)。所以这里服务代码与调度程序分离,因此只有调度程序运行并将服务代码加载到RAM中。

  2. 我是对的吗? 调度程序是否也运行所有24小时检查时间?

    1. 如果我有一个安装程序的2个服务。现在将安装2个服务。但是我想知道两个服务是否都是10mb,这两个服务的大小是20mb。并且当两个服务开始运行时,每个服务的大小都是10mb(考虑到它将导致相关服务代码)或者每个20mb(考虑到它)将对两个服务代码进行排序,因为它们位于同一个exe中。
    2. 希望获得一些有价值的答案。

      提前致谢。

1 个答案:

答案 0 :(得分:0)

一切都取决于您的实施。

这是Windows服务的工作方式:

  1. 您的安装程序注册了一个Windows服务对象
  2. 服务对象启动yourservice.exe
  3. yourservice.exe范围内,您必须实施服务命令(例如:OnStartOnStop
  4. 现在取决于你在这些方法中做什么
  5. 只要服务正在运行,
  6. yourservice.exe就会运行
  7. 我的建议:

    1. 将现有逻辑打包到库中
    2. 使用服务OnStart方法启动计时器(计时器几乎不需要任何资源)
    3. 在计时器回调中使用库实例化您的逻辑(现在已经分配了10兆)
    4. 在你的工作完成后清理所有东西(如果你不持续使用任何东西,10分钟就会被释放)
    5. 在第3步中,你可以自由地实例化你的逻辑两次,然后当然会使用2x 10兆。