【C#】Event事件的订阅和发布
学习笔记:学习了委托和事件的用法。事件是一种特殊的委托,记录下事件从订阅到发布的流程。
学习资料源于视频:http://www.maiziedu.com/course/510-6891/
新建一个Demo项目,新建以下三个类:
- Server.cs:模拟服务端,推送消息。
- Client.cs:模拟客户端,订阅消息。
- Program.cs:模拟控制程序。
Server.cs:
using System;
namespace EventDemo
{
// 定义Event前必须先定义Delegate
public delegate void DelSendMsg(string msg);
// 模拟服务端 推送消息
public class Server
{
// 事件是委托的实例对象
public static event DelSendMsg sendMsgEvent;
// 服务器端推送消息给客户端的方法
public void SendMsg(string msg)
{
Console.WriteLine("服务器端开始推送消息!");
// sendMsgEvent由客户端初始化,如果它不为空,即表示客户端订阅了该事件
if (sendMsgEvent != null)
{
// 执行委托(执行事件,就是执行它注册的方法)
sendMsgEvent(msg);
}
}
}
}
Client.cs:
using System;
namespace EventDemo
{
// 表示手机客户端 订阅消息推送事件
class Client
{
// 订阅事件:客户端订阅服务端推送消息的功能
public void Subscription()
{
Console.WriteLine("客户端订阅了推送事件!");
Server.sendMsgEvent += Server_sendMsgEvent; // 实例化,给事件绑定方法
}
private void Server_sendMsgEvent(string msg)
{
Console.WriteLine("客户端接收到的推送消息:" + msg);
}
}
}
Program.cs:
namespace EventDemo
{
// 模拟控制程序
public class Program
{
static void Main(string[] args)
{
Client client = new Client();
Server server = new Server();
// 客户端订阅消息
client.Subscription();
// 服务端推送消息
server.SendMsg("我就是推送的消息!");
}
}
}
最后运行结果如下:
关于事件Event和代理/委托Delegate的区别:
【C#】Event事件的订阅和发布的更多相关文章
- C#中的事件的订阅与发布
认识发布者/订阅者模式 发布者定义一系列事件,并提供一个注册方法: 订阅者向发布者注册自己的事件处理逻辑,供一个可被回调的方法,也就是事件处理程序:当发布者的事件被触发的时候,订阅者将通过回调函数得到 ...
- VB.net Wcf事件广播(订阅、发布)
这篇东西原写在csdn.net上,最近新开通了博客想把零散在各处的都转移到一处. 一.源起 学WCF有一段时间了,可是无论是微软的WebCast还是其他网上的教程,亦或我购买的几本书中,都没有怎么 ...
- 领域驱动模型DDD(二)——领域事件的订阅/发布实践
前言 凭良心来说,<微服务架构设计模式>此书什么都好,就是选用的业务过于庞大而导致代码连贯性太差,我作为读者来说对于其中采用的自研框架看起来味同嚼蜡,需要花费的学习成本实在是过于庞大,不仅 ...
- [.NET] C# 知识回顾 - Event 事件
C# 知识回顾 - Event 事件 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6060297.html 序 昨天,通过<C# 知识回顾 - ...
- Event 事件
事件是建立在委托的基础之上的. http://www.cnblogs.com/lystory/p/5085786.html public class 事件参数 { public 事件参数(string ...
- CDI(Weld)高级<4> Event(事件) (转)
目录[-] 1. Event payload(事件的有效载入) 2. Event observers(event的观察者) 3. Event producers(event生产者) 4.Annotat ...
- Redis实战——Redis的pub/Sub(订阅与发布)在java中的实现
借鉴:https://blog.csdn.net/canot/article/details/51938955 1.什么是pub/sub Pub/Sub功能(means Publish, Subscr ...
- (尚032)Vue_案例_消息订阅与发布(组件订阅与发布(PubSubJS库))
组件订阅与发布(PubSubJS库) npm info pubsub-js 安装库 npm install --save pubsub -js ============================ ...
- C#中的委托、事件及事件的订阅
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
随机推荐
- HDUOJ----1263水果
水果 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...
- 【js】indexOf()
/** **位置方法indexOf()和lastIndexOf() **这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引 **indexOf()方法从数组的开头(位置0)开始向后 ...
- VSCode调试Html中的脚本 vscode前端常用插件推荐,搭建JQuery、Vue等开发环境 vsCode 添加浏览器调试和js调试的方法总结 VS Code - Debugger for Chrome调试js
一.背景 使用Visual Studio Code写了一个简单的Html页面,想调试下其中script标签里的javascript代码,网上查了一通,基本都是复制粘贴或者大同小异的文章,就是要安装De ...
- tmux安装
安装tmux sudo yum -y install tmux 修改tmux配置 cat > /root/.tmux.conf <<EOF set-option -g default ...
- jQuery $.extend()使用方法
$.extend()使用方法总结. jQuery为开发插件提拱了两个方法,各自是: jQuery.fn.extend(object); jQuery.extend(object); jQuery.ex ...
- SGU 114. Telecasting station 三分or找中位数
题目链接点这儿 一開始想都没想...直接上了三分...结果...sample的答案不一样...可是过了...然后又看了看. . . 发现这不就是高中或者初中出过的求中位数的题么. . .直接找到这些的 ...
- Mac升级bash到最新版本
mac自带的bash为3.2版本,而最新的bash是4.9,需要升级了,才能支持关联数组等新特性. 1.brew install bash 2.安装到/usr/local/bin/bash里面.可以通 ...
- iOS: 让键盘消失的的4种方法
转自:http://leopard168.blog.163.com/blog/static/168471844201422121310352/ 在iOS app中,只要用到编辑框(UITextFiel ...
- 非常全的linux面试笔试题及答案
一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用 i节点来标识.4. ...
- [转载] C++的那些事:你真的了解引用吗
我转载了roony的一篇文章 C++的那些事:你真的了解引用吗 以备以后可以查到. 一.引用的本质是什么 说到引用,一般C++的教材中都是这么定义的: 1.引用就是一个对象的别名. 2.引用不是值不占 ...