欢迎光临散文网 会员登陆 & 注册

(C#笔记)委托、事件、多线程

2021-06-17 22:42 作者:流年夏华  | 我要投稿

相关概念:

委托

委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托实例调用方法。

委托用于将方法作为参数传递给其他方法。 事件处理程序就是通过委托调用的方法。 你可以创建一个自定义方法,当发生特定事件时,某个类(如 Windows 控件)就可以调用你的方法。

事件

类或对象可以通过事件向其他类或对象通知发生的相关事情。

发行者确定何时引发事件;订户确定对事件作出何种响应。

一个事件可以有多个订户。 订户可以处理来自多个发行者的多个事件。

没有订户的事件永远也不会引发。

事件通常用于表示用户操作,例如单击按钮或图形用户界面中的菜单选项。

多线程

线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。如果您的应用程序涉及到复杂的和耗时的操作,那么设置不同的线程执行路径往往是有益的,每个线程执行特定的工作。

线程是轻量级进程。一个使用线程的常见实例是现代操作系统中并行编程的实现。使用线程节省了 CPU 周期的浪费,同时提高了应用程序的效率。

下面用一个例子来说明

调试结果:

1026978286

线程 0x3edc 已退出,返回值为 0 (0x0)。

这段代码的效果是创建一个新线程执行循环,并将结果返回给UI线程的控件上。

因为在Winform中,UI线程执行循环时容易出现窗体假死的情况,解决方法是使用多线程代替计算。但同时出现的问题是,子线程无法直接修改UI线程的控件,所以使用控件(继承于Control)的Invoke方法,可以将事件传入。又因方法套委托,委托套事件,最终Invoke执行返回方法。

整个流程就是“线程(计算方法(事件(委托(返回方法))))”。

(C#笔记)委托、事件、多线程的评论 (共 条)

分享到微博请遵守国家法律