创建一个windows services (不用管语法是否有错,随手写的)
class services : ServiceBase{
private int i;
private string s;
public void OnStart(){
this.i = 1;
this.s = "this is a services!":
}
public int getI(){
return this.i;
}
public string getInfo(){
return this.s;
}
public bool Refresh(){
this.s = "DoDo";
this.i =0;
return(true);
}
}
现在的问题是如何在winForm中或其它程序访问这个服务(假设已在服务器中运行了),并修改它的public属性

解决方案 »

  1.   

    你用.Net Remoting吧。这是进程间的通讯,没有很简单的方法。
      

  2.   

    添加服务引用,输入所生成的webservice的地址,会生成一个webservice的命名空间,包含了webservice的函数,直接调用就行了
      

  3.   

    详细情况:
    创建一个windows servernamespace server1{
    class services1 : ServiceBase{
        private int i;
        private string s;
        public void OnStart(){
            this.i = 1;
            this.s = "this is a services!":
        }
        public int getI(){
            return this.i;
        }
        public string getInfo(){
            return this.s;
        }
        public bool Refresh(){
            this.s = "DoDo";
            this.i =0;
            return(true);
        }
    }
    }
    我要在form(同一namespace)中调用
    //假设服务器上的对应服务中的 s = "OnServer1"; i = 1000;Server1.services1 oServer = new Server1.services1();this.txt.Text = this.oServer.getInfo();botton1.Click = button1_Click()
    button1_Click(){
        this.txt1.Text = this.oServer.Refresh();
    }一:
    这样的话,txt.Text == "this is a services!":
    还是 txt.Text == "OnServer1";???二:
    还有就是 
    winform 中的 button1_Click 能否执行 this.oServer.Refresh(); 达到修改服务器的服务的状态.
      

  4.   

    当你的Windows Services 运行的时候, 它已经是在另一个process里了, 你直接调用到你的winform里是不可行的。
    这里就回到一个现在都觉得比较难得问题, 那就是不同进程间的通讯问题。 解决的办法:
    1. Socket
    2. Remoting
    3. NamePine
    4. Memory Share可能还有其他的一些方法吧, 可是我不知道.......
      

  5.   

    忘了一个方法呵呵~~~ 常用的方法:
    那就是COM.
    1. 在你的Windows serivces 初始化你的COM object,
    然后你的winform也初始化同样的一个COM object.
    在你的COM object里, 你要确认只能有一个Instance运行。 
    那么你的winform就可以有一个指针到同一个COM object里, 那么你就可以调用那些方法了.2. 或者把你的COM放到COM running table里, 例如Visual Studio就是这样。
    然后利用Marshal来获取正在COM running table里运行的COM object来调用你需要的函数希望这些对你有帮助. 
      

  6.   

    WCF里面有解决方案,看看这个,模仿着里面的例子可以做一个http://msdn.microsoft.com/zh-cn/library/ms734712.aspx