文档章节

c#订阅-发布模式简单示例

o
 osc_w9s1w4o0
发布于 2019/04/03 11:01
字数 372
阅读 9
收藏 0

精选30+云产品,助力企业轻松上云!>>>

发布-订阅模型是指两个或多个不同对象,一个广播消息,其他的接受消息。发布者的广播不受接受者的影响,接受者的数量和对接受消息的处理与发布者无关,降低了对象之间的耦合性。

下面以两个窗口之间的通信示例

首先在vs里面新建一个windows窗体应用,自动生成Form1,然后添加一个窗口Form2,并在Form1和Form2中分别各添加一个button和一个文本框TextBox

双击Form1中button,进入代码编辑如下

namespace Forms
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void setTxt(string s)//接受一个字符串并在文本框内显示
        {
            textBox1.Text = s;
        }
        private void button1_Click(object sender, EventArgs e)//当按钮被点击
        {
            Form2 fm = new Form2();//实例化一个form2对象
            fm.onClicks += setTxt;//添加事件,见Form2
            fm.Show();//显示Form2窗口
        }
    }
}

双击Form2的button,进入代码编辑界面

namespace Forms
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public event Action<string> onClicks;//定义事件
        private void button1_Click(object sender, EventArgs e)//当按钮被点击
        {
            string s = textBox1.Text;//获取文本框输入内容
            onClicks(s);//执行事件并传入参数
        }
    }
}

在Form1界面编译启动,点击按钮打开Form2。

在Form2中输入的内容,点击form2按钮后,就会在form1中显示

同理也可以再新建form3,form4,通过向form2中onClick添加自己的方法,就能实现订阅。

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
C# Redis

原文:C# Redis C# Redis 发布订阅模型 Redis中的发布订阅 客户端编程示例 0.3版本Hredis 发布订阅模型 在应用级其作用是为了减少依赖关系,通常也叫观察者模式。主要是把耦合点单独抽离出来作...

osc_db1n5a75
2019/01/03
2
0
最通俗易懂的Redis发布订阅及代码实战

最通俗易懂的Redis发布订阅及代码实战 发布订阅简介 除了使用List实现简单的消息队列功能以外,Redis还提供了发布订阅的消息机制。在这种机制下,消息发布者向指定频道(channel)发布消息,...

万猫学社
03/30
0
0
C# 实现 websocket 服务器 发送客户端网页前端数据,C#和网页前端通信

今天的文章来说明如何在C#里构建我们自己的websocket服务器,已经客户端,以及如何发送数据给客户端,如何实现订阅的操作,如何实现应答模式的操作。ok,废话不多说,直接进入正题: 本库的d...

dathlin
02/13
0
0
C# 实现 websocket 服务器 发送客户端网页前端数据,C#和网页前端通信

今天的文章来说明如何在C#里构建我们自己的websocket服务器,已经客户端,以及如何发送数据给客户端,如何实现订阅的操作,如何实现应答模式的操作。ok,废话不多说,直接进入正题: 本库的d...

osc_x2c17gwy
02/13
2
0
最通俗易懂的Redis发布订阅及代码实战

发布订阅简介 除了使用List实现简单的消息队列功能以外,Redis还提供了发布订阅的消息机制。在这种机制下,消息发布者向指定频道(channel)发布消息,消息订阅者可以收到指定频道的消息,同...

万猫学社
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在Bash脚本中,如果发生某种情况,如何退出整个脚本?

问题: I'm writing a script in Bash to test some code. 我正在Bash中编写脚本来测试一些代码。 However, it seems silly to run the tests if compiling the code fails in the first pl......

技术盛宴
13分钟前
11
0
Windows安装Python+OpenCV

1、更新PyCharm中pip来源,使用清华和阿里云:https://pypi.tuna.tsinghua.edu.cn/simple/ http://mirrors.aliyun.com/pypi/simple/ 2、PyCharm查看已安装packets,添加新的安装包,从pip云端...

极客行
37分钟前
17
0
tomcat8配置虚拟目录,实现一个tomcat运行两个项目, tomcat配置URL不区分大小写

<?xml version="1.0" encoding="UTF-8"?><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distri......

青峰Jun19er
43分钟前
19
0
HBase和MySQL存储方式的差别?或者说是,行存储和列存储的区别?

HBase借鉴列存储的思想,但是最底层依然是依靠键值对来存储数据,HBase为非关系型数据库 而MySQL则是行存储,MySQL为关系型数据库 写过程 行存储因为数据是连续的,所以只需要进行追加即可;...

其乐m
47分钟前
25
0
一个老程序员在互联网寒冬下的感悟

1. 你千万不要认为学习技术就可以换来稳定的生活和高的薪水待遇,你更不要认为那些从事市场开发,跑腿的人,没有前途。 不清楚你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开...

北柠Java
51分钟前
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部