Lea*_*ppi 5 c# windows service
有没有办法将对象传递给Windows服务?我知道方法myServiceController.Star(string [] arg)但我需要传递一个比字符串数组更复杂的对象.实际上,我不需要将对象作为参数传递,我真正需要的是服务可以使用在Windows窗体应用程序中创建的对象.我已经尝试使用System.Web.Script.Serialization.JavaScriptSerializer.Serialize方法将对象转换为Json但我不能,因为该对象包含循环引用.我也试过使用指针,但我不能因为它是一个托管类型的对象.
知道我该怎么办?
与其尝试传递对象本身(这将不起作用,因为服务在单独的进程中执行),不如传递对数据的外部引用。例如,包含序列化对象的文件的路径。
我假设您的服务也是在 .NET 中实现的?如果是这样,则使用二进制序列化(BinaryFormatter),因为这将处理循环引用。然后,您可以通过从指定文件加载来在服务中反序列化。
您可能需要考虑如果用户重新启动您的服务会发生什么 - 在这种情况下它从哪里获取数据?不会有启动参数。使用注册表来存储序列化对象的文件名,并让您的服务在启动时从中读取文件名,可能会更可靠。然后,即使在没有启动参数的情况下调用,它也始终会找到数据,就像机器重新启动或用户重新启动服务的情况一样。