审查生成的报告通知器

来自 委托与事件
C# 14 / .NET 10 高级 6分钟 找出 4处问题

在这段生成的通知代码用于长期进程中的机密报告前,对它进行审查。

允许零个监听器;在 PublishAsync 返回前等待每次面板保存;保留失败;不记录报告内容;并在释放面板时解除订阅。

csharp
using System;
using System.Threading.Tasks;
public sealed class ReportSource
{
    public event EventHandler<string>? Ready;
    public async Task PublishAsync(string report)
    {
        Ready!.Invoke(this, report);
        await Task.CompletedTask;
    }
}
public sealed class Dashboard : IDisposable
{
    private readonly ReportSource _source;
    public Dashboard(ReportSource source) {
        _source = source;
        _source.Ready += async (_, report) =>
        {
            Console.WriteLine($"saving {report}");
            await SaveAsync(report);
        };
    }
    public void Dispose() => _source.Ready -= async (_, report) => await SaveAsync(report);
    private static Task SaveAsync(string report) => Task.Delay(10);
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误