Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows服务未持久化对象状态_C#_Windows Services - Fatal编程技术网

C# windows服务未持久化对象状态

C# windows服务未持久化对象状态,c#,windows-services,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() { r

我已经创建了一个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
}
public void GetValues()
{
var binding=new NetNamedPipeBinding();
var epAddrs=新的端点地址(“net。pipe://localhost/PipeReverse");
var管道厂=
新渠道工厂(
结合
EPADRS);
var代理=
CreateChannel();
Assert.AreEqual(proxy.getvaluebambol(),“bambol”);//返回false
Assert.AreEqual(proxy.GetValueBaboon(),“baboon”);//返回false
}
我注意到,如果我使用同一个代理对象首先设置字段/属性的值(没有编写这些方法,非常简单),那么结果会像预期的那样出来,但是使用新代理对象之后的每次调用都会返回空字符串


有没有一种方法可以在服务上设置一些属性和/或字段,并在调用服务之间保持这些属性和/或字段?

我最终使用的解决方案就是将字段声明为静态,然后就可以了


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

您的服务中是如何实现ITaskManager的?@CoreTech我的windows服务项目中的一个类。该类还继承ServiceBase。