Windows服务不持久对象状态

时间:2015-01-19 09:57:23

标签: c# windows-services

我创建了一个在启动时使用此方法的win服务:

private String bamboo = "";
public String Baboon = "";

protected override void OnStart(string[] args)
{
    this.bamboo = "bamboo";
    this.baboon = "baboon";
}

服务启动后,我有返回字段和属性的方法:

public String GetValueBamboo()
{
    return this.bamboo;
}

public String GetValueBaboon()
{
    return this.Baboon;
}

当我尝试从另一个应用程序获取值时,这些方法返回空字符串:

public void GetValues()
{
    var binding = new NetNamedPipeBinding();
    var epAddrs = new EndpointAddress("net.pipe://localhost/PipeReverse");

    var pipeFactory =
        new ChannelFactory<ITaskManager>(
        binding,
        epAddrs);

    var proxy =
        pipeFactory.CreateChannel();

    Assert.AreEqual(proxy.GetValueBamboo(),"bamboo"); // returns false
    Assert.AreEqual(proxy.GetValueBaboon(),"baboon"); // returns false
}

我注意到如果我使用相同的代理对象来首先设置字段/属性的值(没有编写那些方法,非常简单),那么结果会按预期结果出来,但每次调用后都会有新的代理对象再次返回空字符串。

有没有办法可以在服务上设置一些属性和/或字段,并且它们在服务调用之间保持不变?

1 个答案:

答案 0 :(得分:0)

我最终使用的解决方案只是将字段声明为静态,然后它可以工作。

我仍然想知道为什么重新初始化客户端后服务中的实例字段会重置,所以如果有人对此有任何想法,我非常想知道。