如何通过网络使用订阅(客户端)/调用(服务器)委托? C#

时间:2014-10-16 18:15:02

标签: c# events delegates client-server remoteobject

我必须在客户端和服务器之间实现异步通信,我创建了一个测试应用程序,它通过委托来完成(客户端订阅服务器的实例化委托,每隔x秒调用一次)。服务器和客户端运行在同一个解决方案上,现在我想将服务器放在VM上并保持通信。是否可以通过代表来完成?如果是这样,怎么样?

代表:

public delegate void ClientStartedEventHandler(String s);

客户端:

private void OnStartClick(object sender, EventArgs e)
{
      Server.ClientStarted += ClientStarted;
      Server.start();
}

private void ClientStarted(String s)
{
      MessageBox.Show(s);
}

服务器:

public static class Server
    {
        public static event ClientStartedEventHandler ClientStarted;

        public static void start()
        {
            Timer myTimer = new System.Timers.Timer();
            myTimer.Elapsed += new ElapsedEventHandler(exe);
            myTimer.Interval = 2000;    
            myTimer.Enabled = true;
        }

        private static void exe(object source, ElapsedEventArgs e)
        {
            String strNow = DateTime.Now.ToString();
            if (ClientStarted != null)
            {
                ClientStarted.Invoke(strNow);
            }
        }
    }

0 个答案:

没有答案