在价格源和面板用于长期运行的进程前,审查这段生成的事件代码。
每次价格变化后通知面板,在 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);
}
生成代码仅作示例,不代表任何特定模型