假设有解决方案,有三个工程A(客户端)、B(为服务端)、C(客户端) 三个工程都有一个主窗体
其中A、C可以独立启动.
想实现下列一些功能,求思路!
1:启动A或C的时候也自动B,如果B早已启动则提示有启动(即保证B只有一个实例在运行)  我的想法:利用反射来启动B。  不知道有什么方法可以实现。又能保证B单实例。
  没有办法像在同一工程中调用其他窗体的方法是不是?2:在A中点击一个按钮能不能实现调用C中的事件?即同一解决方案不同项目窗体间能不能传值或触发事件?
  
  如果是利用引用A、B、C生成的类库工程(dll)应该是实现不了。  还有几个问题等这帖解决了再考虑

解决方案 »

  1.   

    用process啊。
    先查询一遍当前的进程,看有没有B进程,如果没有就启动,如果有就不启动了
      

  2.   

    to 1:启动A或C的时候也自动B,如果B早已启动则提示有启动(即保证B只有一个实例在运行)参看
    http://blog.csdn.net/Knight94/archive/2006/05/24/752783.aspx
      

  3.   

    to 2:在A中点击一个按钮能不能实现调用C中的事件?即同一解决方案不同项目窗体间能不能传值或触发事件?应该是可以的,可以通过反射,你可以参看
    http://blog.csdn.net/knight94/archive/2006/04/10/657527.aspx
      

  4.   

    我不想利用DLL来实现做的是一个模拟系统,A程序向服务端B发送某个消息(比如开灯),B将消息传递,而C程序则会在该程序中执行开灯这个事件。但C也是可以独立执行用户相应的事件,只是多了可以用A来控制。应该怎么设计比较好?
      

  5.   

    to 做的是一个模拟系统,A程序向服务端B发送某个消息(比如开灯),B将消息传递,而C程序则会在该程序中执行开灯这个事件。如果不想用dll,那么你只有通过SendMessage来发送消息。
      

  6.   

    如果用DLL,那C程序能独立启动吗?先将C工程生成类库工程?A或B中引用这个工程。但是总觉得这样会出现不一致性的问题即用户先运行C程序,然后利用A(可控制C)程序来改变C程序的某些状态,好像这是两个不同的实例吧?还是把一些公共的类和方法生成一个类库工程,C和A都引用这个DLL来进行改变事件?可以这样吗?
      

  7.   

    Knight94(愚翁)大哥,发了封邮件给你,如果可以,帮我看看,谢谢
      

  8.   

    你可以使用Socket,程序启动的时候给程序B发送一条消息,如果接收到回复则表示没有启动,否则表示启动,这样也可以避免多用户同时登陆带来的实例不唯一问题,但这样做也有个问题,就是端口号如何定?