我有一个Service,设置了InstanceContextMode.Single单例模式,
然后为了测试,我在服务里定义了一个static int i=0;
方法里每调用一次i就自增一次现在通过ServiceHost自寄宿,利用Using(serviceHost....){}来启动服务
每次调用后i都会自增,问题是,当我关闭了服务,然后再开启(不是把宿主程序关了而是把开启服务的线程释放了),发现这个i居然没有重置为0,也就是说不管ServiceHost是不是关闭了,这个服务单例是属于宿主程序本身?而不是隶属于ServiceHost这个类?那不是没法释放服务了?我初学,不太明白,不能在UI界面提供启动和关闭服务功能吗?只能关闭宿主程序再打开?

解决方案 »

  1.   


    public class Service:IService
        {
           static int i = 0;
            public int doSomething()
            {
                i ++;
                return i;
            }
        }这是全局静态变量?不是吧,我经常不用private
      

  2.   


    public class Class1
        {
            static int a = 0;        public Class1()
            {
                a++;
                MessageBox.Show(a.ToString());
            }
         }
    你实例2次测试下~~
      

  3.   

    唉,搞混了,囧,static是属于类的,不是属于实例的