摘要
这是委托的一个重要功能,灵活性非常大。
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数, 这种应用在Javascript中应用相当广泛。
注意:回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。通俗点讲就是说某个实现函数作为参数传入另一个函数中去,当然我们可以通过委托接口等其他一些手段实现这种方式。
正文
一个例子
image.png
delegate void DelValue(int x);
private void btnShow_Click(object sender, EventArgs e)
{
pbarMain.Maximum = 100;
pbarMain.Minimum = 0;
pbarMain.Value = 0;
Run(SetValue);//只需要修改这个地方就可以了
}
private void Run(DelValue del)
{
Task.Run(() =>
{
for (int i = 0; i < 100; i++)
{
this.Invoke(() =>
{
pbarMain.Value++;
del(i);
});
Thread.Sleep(10);
}
});
}
private void SetValue(int x)
{
lblTitle.Text = x.ToString();
}
我们加一个方法
private void SetTextValue(int x)
{
txtValue.Text= x.ToString();
}
image.png