【C#知识点】回调函数

用处:在子流程phase中,调用回调函数

回调函数用法:在C#中,回调函数通常通过委托(delegate)来实现。委托是一种类型安全的函数指针,允许将方法作为参数传递【框架中】。可以使用普通方法或 Lambda 表达式定义回调函数

用法:
1.定义一个委托类型,用于回调函数

// 定义一个委托类型,用于回调函数
    public delegate void CallbackDelegate(string message);

2.一个类:包含回调函数的类,一个方法:接受一个回调函数作为参数

// 包含回调函数的类
    public class Worker
    {
        // 一个方法,接受一个回调函数作为参数
        public void DoWork(CallbackDelegate callback)
        {
            Console.WriteLine("Worker 正在执行任务...");

            // 模拟任务执行
            System.Threading.Thread.Sleep(2000); // 等待2秒

            // 任务完成后调用回调函数
            callback("任务已完成!");
        }
    }

3.调用:

// 主程序
    class Program
    {
        static void Main(string[] args)
        {
            // 创建 Worker 实例
            Worker worker = new Worker();

            // 创建一个委托实例
            CallbackDelegate callback = new CallbackDelegate(OnTaskCompleted);

            // 调用 Worker 的方法,并传入回调函数
            worker.DoWork(callback);
        }

        // 回调函数的具体实现
        public static void OnTaskCompleted(string message)
        {
            Console.WriteLine("回调函数被调用: " + message);
        }
    }

一个回调函数流程完成的关键点:

1.定义一个委托类型delegate

// 定义一个委托类型CallbackDelegate
public delegate void CallbackDelegate(string message);

2.创建一个委托实例callback ,并将其指向一个方法OnCallback(其方法是回调函数具体的实现方法)

// 创建一个委托实例,并将其指向一个方法
CallbackDelegate callback = new CallbackDelegate(OnCallback);

3.传递回调函数:我们将回调函数 callback 作为参数传递给 PerformTask 方法

// 调用一个方法,并将回调函数作为参数传递
PerformTask("Hello, World!", callback);

4.执行任务并调用回调(在 PerformTask 方法中)

// 这是一个执行某些任务的方法,它接受一个字符串和一个回调函数作为参数
    static void PerformTask(string task, CallbackDelegate callback)
    {
        Console.WriteLine("Performing task: " + task);

        // 模拟任务完成后的回调
        callback("Task completed!");
    }

5.回调函数的具体实现

// 这是回调函数的具体实现
    static void OnCallback(string message)
    {
        Console.WriteLine("Callback received: " + message);
    }

整体代码:

using System;

class Program
{
    // 定义一个委托类型,表示回调函数的签名
    public delegate void CallbackDelegate(string message);

    static void Main(string[] args)
    {
        // 创建一个委托实例,并将其指向一个方法
        CallbackDelegate callback = new CallbackDelegate(OnCallback);

        // 调用一个方法,并将回调函数作为参数传递
        PerformTask("Hello, World!", callback);
    }

    // 这是一个执行某些任务的方法,它接受一个字符串和一个回调函数作为参数
    static void PerformTask(string task, CallbackDelegate callback)
    {
        Console.WriteLine("Performing task: " + task);

        // 模拟任务完成后的回调
        callback("Task completed!");
    }

    // 这是回调函数的具体实现
    static void OnCallback(string message)
    {
        Console.WriteLine("Callback received: " + message);
    }
}

实现结果:

Performing task: Hello, World!
Callback received: Task completed!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值