C#多线程通信之委托(事件)

2014-11-24 12:13:48 · 作者: · 浏览: 2

在研究C# 线程之间通信时,发现传统的方法大概有三种



全局变量,由于同一进程下的多个进程之间共享数据空间,所以使用全局变量是最简单的方法,但要记住使用volatile进行限制。


线程之间发送消息(这个随后文章中会讨论到)。


CEventMFC中的一个对象,可以通过对CEvent的触发状态进行改变,从而实现线程间的通信和同步,这个主要是实现线程直接同步的一种方法。



本文介绍的一种方法是这三种之外的一种方法,本文中实例是通过创建一个线程类,通过委托事件把值传送到Form所在的类中,同时更新Form类中的一个控件(Label)中的值。


实现功能比较简单,目的是实现此功能,先把代码贴上:


MyThread.cs



这个需要说明一下:


add 上下文关键字用于定义一个自定义事件访问器,当客户端代码订阅您的事件时将调用该访问器。 如果提供自定义 add 访问器,还必须提供 remove 访问器。


remove 上下文关键字用于定义一个自定义事件访问器,当客户端代码取消订阅事件时将调用该访问器。 如果提供自定义 remove 访问器,还必须提供 add 访问器。