如何将数据从安装程序类传递到Windows服务的OnStart方法

问题描述

[RunInstaller(true)]
public partial class AttendanceInstaller : Installer
{
   public string idString;
   public string houRSString;
 
   public AttendanceInstaller()
   {
       InitializeComponent();
   }
   
   public override void Install(IDictionary stateSaver)
   {
      base.Install(stateSaver);
      idString = Context.Parameters["deviceid"];
      houRSString = Context.Parameters["Hours"];
    }    
}

    
public partial class Attendance : ServiceBase
{
   protected override void OnStart(string[] args)
   {
   
   }
}

我需要在idString方法中使用AttendanceInstaller类的onStart()变量。我能怎么做? 感谢您的帮助。

解决方法

我冒着写答案但没有提供解决方案的风险。我相信您无法尝试。至少从近期来看。您的班级AttendanceInstaller继承自Installer。 Installer类用于安装服务。它可能会执行一次。 您的班级出勤率继承自ServiceBase。它通过重写OnStart方法来实现服务。通过服务控制管理器启动服务时,将调用OnStart方法。因此,您有两个可能永远不会共享范围的单独的类(例如,纯粹主义者)。因此,您应该找到另一种传递数据的方式,也许是将文件放在磁盘上。