用处:在子流程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!