【问题标题】:Windows Service Variable LifetimeWindows 服务变量生命周期
【发布时间】:2015-01-10 19:17:58
【问题描述】:

我想了解 Windows 服务上的变量生命周期。

我有一个 SQL 表,其中一个临时表存储了我的应用程序的 INFLOW 和 OUTFLOW 记录。

我声明了两个全局变量,如下所示,我将临时表中的行 ID 分配给这个变量。 int iTempKeyInflow = 0; int iTempKeyOutflow = 0;

在经过的时间上,我是否会丢失服务在上一次运行中处理的这些值。

基本上,如果定时器在一个周期执行完成之前到期,服务周期是否仍然在后台运行。那么我可以在一秒钟内处理表中的 100 条记录吗?

【问题讨论】:

    标签: c# windows-services


    【解决方案1】:

    Windows 服务不会比任何其他程序引入更多的生命周期复杂性。唯一的区别是它在后台安静地运行。

    实现 Windows 服务的 .NET 应用程序继承 ServiceBase 类并覆盖 OnStart 方法。这就是 API 的范围。 OnStart 方法负责其他所有事情 - 如果它只是退出,那么服务也会退出。如果它产生一个新的后台线程或任务来执行其工作,那么该线程将继续存在。

    当该方法退出时,在 OnStart 中定义的变量将超出范围。在类范围内或从 OnStart 调用的类范围内定义的对象将与该类实例的生命周期相关联。

    如果不知道您在哪里定义变量,我们无法告诉您它们的生命周期是多少,但作为 Windows 服务运行可能不会成为决定因素。

    【讨论】:

    • 我的变量在每次计时器重置时执行的方法 Get_Write_Read() 中定义。 public void OnElapsedTime(object source, ElapsedEventArgs e) { #region Log_EVENTVIEWER ProcessData pd = new ProcessData(); bResult = pd.Get_Write_Read(); }
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多