审查生成的价格通知

来自 事件订阅与生命周期
C# 14 / .NET 10 高级 6分钟 找出 3处问题

在价格源和面板用于长期运行的进程前,审查这段生成的事件代码。

每次价格变化后通知面板,在 Publish 返回前完成持久化,允许零个订阅者,并在面板释放后停止通知。

csharp
using System; using System.Threading.Tasks;
public sealed record PriceChangedEventArgs(decimal Price) : EventArgs;
public sealed class PriceFeed
{
    public event EventHandler<PriceChangedEventArgs>? PriceChanged;
    public void Publish(decimal price) =>
        PriceChanged!.Invoke(this, new PriceChangedEventArgs(price));
}
public sealed class Dashboard : IDisposable
{
    private readonly PriceFeed _feed;
    public Dashboard(PriceFeed feed)
    {
        _feed = feed;
        _feed.PriceChanged += async (_, e) =>
        {
            await SaveAsync(e.Price);
            Console.WriteLine($"saved: {e.Price}");
        };
    }
    public void Dispose() =>
        _feed.PriceChanged -= async (_, e) => await SaveAsync(e.Price);
    private async Task SaveAsync(decimal price) =>
        await Task.Delay(10);
}

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

在试验场中打开
报告错误