安装TinyPubSub库,按照 主题发布订阅
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static TinyPubSubLib.TinyPubSub;namespace Net9Test
{public partial class Form4 : Form{private readonly string _channelName = "MyChannel";public Form4(){InitializeComponent();RefresUI();RefresUI2();}private void button1_Click(object sender, EventArgs e){Publish(_channelName, Guid.NewGuid().ToString());}public void RefresUI(){Subscribe<string>("MyChannel", data =>{richTextBox1.Invoke(new Action(() =>{richTextBox1.AppendText($"[{DateTime.Now}] 收到消息:{data}\r\n");}));});}public void RefresUI2(){Subscribe<string>(_channelName, data =>{richTextBox2.Invoke(new Action(() =>{richTextBox2.AppendText($"[{DateTime.Now}] 收到消息:{data}\r\n");}));});}private void Form4_FormClosing(object sender, FormClosingEventArgs e){Unsubscribe(_channelName);}}
}
安装PubSub库,按照类型发布 订阅,相当于轻量的MediatR,中介者模式
using Net9Test.Services;
using PubSub;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Net9Test
{public partial class Form3 : Form{Hub hub = Hub.Default;public Form3(){InitializeComponent();RefreshUI();RefreshUI2();}Random random = new Random(DateTime.Now.Microsecond);private void button1_Click_1(object sender, EventArgs e){hub.Publish(random.Next(100, 200));}public void RefreshUI(){hub.Subscribe<int>(this, data =>{richTextBox1.Invoke(new Action(() =>{richTextBox1.AppendText($"[{DateTime.Now}] 收到消息:{data}\r\n");}));});}public void RefreshUI2(){hub.Subscribe<int>(this, data =>{richTextBox2.Invoke(new Action(() =>{richTextBox2.AppendText($"[{DateTime.Now}] 收到消息:{data}\r\n");}));});}private void Form3_FormClosing(object sender, FormClosingEventArgs e){hub.Unsubscribe<int>();}}
}