解决方案 »
- DesignSurface 如何实现快捷键
- 关于死机问题
- (100分)如何用web页面控制和监听远程机器上的windows服务?
- c#中的串口类与调用API,有什么区别,哪个好些??
- 怎么写密钥?
- 巨分:一道 计算机COM接口间的文件传输 编程实现 面试题,非高手勿入!
- C#访问ASP.NET网页问题
- Xml 里面的 CDATA 类型数据如何读取,下面这个CDATA 数据就是一个表的数据。如何读取CDATA数据并转化为datatable或者其他对象数组等,或者其他类型数据也可以。请教高人指教
- 用户控件测试容器 未能加载程序集 无法加载一个或多个请求的类型
- GetHashCode()返回的值不会变吗?
- 請教默認輸入修改問題
- C#连接Oracle 11g问题
这个可以在服务端定义一个全局的字典保存通道信息,key为客户端的标识,value为通道信息,每次注册,将通道信息保存到字典中。
2.服务器向客户端推送消息
这个就可以遍历那个集合,向客户端发消息。
3.客户端关闭怎么取消这些事件
主动取消事件本质是向服务端发消息,服务端判断之后将该客户端的通道信息从全局字典中移除,具体可以再客户端关闭时closing事件中实现。被动取消,比如断线,可以通过心跳机制实现
整个流程就是服务端开启--客户端发消息给服务端注册--服务端接受之后管理信息--当服务端有信息时随时可以发送到客户端
我以前写的例子可以参考下,资源地址http://download.csdn.net/download/pfe_nova/4225744
嗯,我写了closing事件的,可是客户端关闭好久才能出发,这个时候,回调函数早就出错了,两外你说的那个Key Value,在程序运行过程中还能获取么?还有当客户端调用服务是,自动形成实例前,我不能给他加事件啊?貌似构造函数也无法 加参数哦,哎被人小白一个,按您说的,我改了下
public UpDate()
{
Temper = StartUpService.TR;
Temper.EventTempHum += new TempHumHandler(GetTempHumChanges);
t = new Thread(new ThreadStart(Counting));
t.IsBackground = true;
t.Start();
} public void Counting()
{
while(true)
{
if(i-- < 0)
{
Channel_Closing(new object(), EventArgs.Empty);
}
Thread.Sleep(1000);
}
}