之前讲过Action委托的用法,今天我们聊一聊Action委托的另一个用处:如何用Action委托实现多线程调用。 用Action委托调用多线程是一种特别简单的方式,你不需要了解像Thread、ThreadStart...类,只需要一句话就可以实现多线程调用。下面我们开始。
创建控制台应用程序,引用命名空间System.Thread。 如下图:
在Program类中,定义两个方法,这就是后面多线程需要调用的两个方法。第一个方法每隔1秒输出一行加号,第二个方法每隔0.5秒输出一行减号。如下图:
下面在Main函数中定义Action委托,调用两个方法。我们先用单线程的方式调用,如下图,先输出10行加号,再输出10行减号:
输出结果跟预期的一样。
下面使用多线程的方式调用。多线程是用Action委托提供的BeginInvoke方法,该方法有两个参数,第一个参数为回调函数,第二个参数为Object类。我们先忽略这两个参数,传Null值。 如下图修改代码:
再运行程序,输入结果如下图: 加号和减号交叉输出,说明两个方法是多线程调用的。
按照惯例,总结一下:
1.调用Action的BeginInvoke方法,可以多线程调用该方法。
2.不需要精确控制的线程,可以用BeginInvoke的方式启动。