c#委托是一个类,可以定义一种方法类型,将有这种类型的函数当做参数进行传递,即他是一个可以把方法作为参数的类。
这里通过一个小功能分别说明一下c#委托(delegate、Action、Func、predicate)的用法。
如下图所示:
Form1窗体里有两个进度条,点击start按钮,他们同时进行读取,这里就需要用到多线程。因为两个进度条如果在一个线程内,只能一个一个的读取。而用到多线程就要跨线程访问控件,这里最简单方法就是调用允许跨线程访问控件的方法,虽然一句话就可以解决,但是在复杂的程序中会造成一些莫名其妙的错误,所以用委托可以解决这个问题。
- delegate
这里先用委托使两个进度条可以逐个读取。然后在用跨线程委托的方式使他们可以同时进行读取。
先定义一种委托类型并声明委托对象:
public delegate void SetProgressBar(int value);
SetProgressBar setProgressBar;
通俗的讲, setProgressBar是一个可以传递带一个int类型参数函数的委托。那就可以定义两个带int类型参数的函数,来让setProgressBar当参数传递即可。
private void setProgressValue1(int value)
{
progre