我必须在客户端和服务器之间实现异步通信,我创建了一个测试应用程序,它通过委托来完成(客户端订阅服务器的实例化委托,每隔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);
}
}
}