C# 委托回调

摘要


这是委托的一个重要功能,灵活性非常大。

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数, 这种应用在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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 参考Unity游戏开发——对委托的理解[https://zhuanlan.zhihu.com/p/84015453...
    合肥黑阅读 4,193评论 0 5
  • 委托 C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某...
    兜兜_2925阅读 3,690评论 0 1
  • C#中的delegate 在c#中,event与delegate是两个非常重要的概念。因为在Windows应用程序...
    Justin_901e阅读 1,625评论 0 0
  • 委托是C#重要特性之一,C#中很多特性都是建立在委托的基础之上。 什么是委托 委托也叫代理delegate,就是把...
    JunChow520阅读 12,594评论 2 7
  • 委托是什么 在C语言中,有一个函数指针的概念:returnType (*func)(T1, T2...) 在这样一...
    能不能写满三篇阅读 3,693评论 0 0