当前位置: 首页 > news >正文

做网站几百块可信吗一刻相册有多少免费空间

做网站几百块可信吗,一刻相册有多少免费空间,开发一款app成本,广告联盟排行榜在 C# 中,事件的发布和订阅机制遵循以下规则:1. 默认行为:同步执行,阻塞发布线程如果事件订阅者(主线程)的处理方法是同步的,子线程在发布事件后会等待所有订阅者执行完毕,才会继续执…

在 C# 中,事件的发布和订阅机制遵循以下规则:

1. 默认行为:同步执行,阻塞发布线程

如果事件订阅者(主线程)的处理方法是同步的,子线程在发布事件后会等待所有订阅者执行完毕,才会继续执行后续代码。

Block_Test.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace WindowsFormsApp1
{public class Block_Test{// 定义一个委托类型public delegate void MyEventHandler(object sender, EventArgs e);// 定义一个事件public event MyEventHandler MyEvent;// 触发事件的方法public void TriggerEvent(){Console.WriteLine($"thread--{Thread.CurrentThread.ManagedThreadId}--");Console.WriteLine("事件触发前");// 触发事件,会调用所有注册的处理程序MyEvent?.Invoke(this, EventArgs.Empty);Console.WriteLine("事件触发后");}}
}

program.cs

         public Form1(){InitializeComponent();Console.WriteLine($"Form1--{Thread.CurrentThread.ManagedThreadId}--");signalThread = new Thread(publisher.TriggerEvent);signalThread.IsBackground = true; // 设置为后台线程//OnEventHandlerAsync();//异步订阅(不阻塞发布线程)// 注册事件处理程序publisher.MyEvent += Program_MyEvent;//阻塞发布线程// 触发事件//program.TriggerEvent();}public void Program_MyEvent(object sender, EventArgs e){//下面的代码发布线程会阻塞if (this.InvokeRequired)  // 判断是否需要切换线程{// 需要切换到主线程this.Invoke(new EventHandler(Program_MyEvent), sender, e);return;}Console.WriteLine($"mian--{Thread.CurrentThread.ManagedThreadId}--");Console.WriteLine("事件处理程序执行中");// 模拟一些工作System.Threading.Thread.Sleep(10000);this.button1.Text = "button2";Console.WriteLine("事件处理程序执行完毕");}

2. 异步执行:发布后立即继续(不阻塞)

如果需要子线程在发布事件后立即继续执行,可以在订阅时使用异步处理

        public Form1(){InitializeComponent();Console.WriteLine($"Form1--{Thread.CurrentThread.ManagedThreadId}--");signalThread = new Thread(publisher.TriggerEvent);signalThread.IsBackground = true; // 设置为后台线程OnEventHandlerAsync();//异步订阅(不阻塞发布线程)// 注册事件处理程序//publisher.MyEvent += Program_MyEvent;//阻塞发布线程// 触发事件//program.TriggerEvent();}private void OnEventHandlerAsync(){// 异步订阅(不阻塞发布线程)publisher.MyEvent += async (sender, e) =>{await Task.Run(() =>{Console.WriteLine("主线程:异步处理事件(模拟耗时操作)");Thread.Sleep(10000);Console.WriteLine("主线程:异步事件处理完成");});};}

http://www.dtcms.com/a/480810.html

相关文章:

  • 甘肃建设厅网站首页网站 数据库选择
  • 洛阳网站建设优化wordpress安装失败
  • 个人合法网站怎么做阳泉市编办网站三基建设
  • 如何区分网站开发语言邯郸网站推广怎么做
  • 网站开发自学要多久杭州最便宜的网站建设
  • 网站vip功能怎么实现昆明云纺片区网站建设
  • 东莞网站设计制作网站做商业网站要交税吗
  • ps做图游戏下载网站有哪些内容html链接网站模板
  • 中国没公司怎么做网站wordpress 本地编辑
  • 怎么简单页网站网站设计 中国风
  • 社区类网站开发实践免费建立网站论坛
  • 公司网站建设一定要求原图吗做视频网站代码
  • 腾讯微信网站建设价格wordpress建站wifi
  • 浦口区建设网站秦皇岛吧 百度贴吧
  • 莱芜网站建设抚顺网络推广
  • 网站建设的中期目标做网站外包好吗
  • 湖北网站开发公司中小企业名录库
  • 营销网站建设哪家好青海网站建设价格
  • 网站建设一意见网站开发属于什么模式
  • 淘宝优惠券 如果做网站手机网投网站建设
  • 网站的运营厦门物业备案建设局登什么网站
  • wordpress用户注册打文章seo网站结构优化
  • 网站设计展示网店推广技巧
  • 深圳网站制作服务公手机版怎么做微电影网站
  • 一个网站一年的费用icp备案查询工信部
  • 怎样更新网站内容做网站是自己公司做好还是外包好
  • 网站建设与管理的就业方向wordpress评论ajax
  • 网站开发制作熊掌号手机网站商城建设答辩问题
  • 南昌网站建设公司咨询wordpress地址跟站点
  • 推广策略都有哪些宁德seo