在 C# 中实现异步线程的进度报告可以通过以下几种方法:
- 使用 Progress
类:可以创建一个 Progress 对象,其中 T 是表示进度的数据类型。然后在异步方法中使用 Report 方法来报告进度。
Progressprogress = new Progress (); progress.ProgressChanged += (sender, value) => { // 处理进度更新 }; await SomeAsyncMethod(progress);
- 使用 IProgress
接口:可以在异步方法中传入一个实现了 IProgress 接口的对象,并使用 Report 方法来报告进度。
IProgressprogress = new Progress (); progress.ProgressChanged += (sender, value) => { // 处理进度更新 }; await SomeAsyncMethod(progress);
- 使用事件:可以在异步方法中定义一个事件来报告进度,然后在调用该方法的地方订阅该事件。
public event EventHandlerProgressChanged; public async Task SomeAsyncMethod() { for (int i = 0; i < 100; i++) { // 执行一些操作 ProgressChanged?.Invoke(this, i); } } // 在调用 SomeAsyncMethod 的地方订阅事件 SomeAsyncMethod.ProgressChanged += (sender, value) => { // 处理进度更新 };
无论哪种方法,都可以在异步线程中报告进度,让调用者能够实时了解任务的执行进度。