在C#中,沒有內置的“Alert”消息傳遞機制
委托是一種類型安全的方法指針,可以將方法作為參數傳遞給其他方法。事件是基于委托的一種特殊類型,用于在特定條件下通知其他對象。這種方式可以實現觀察者模式,當滿足某個條件時,自動觸發相應的操作。
示例代碼:
public class AlertEventArgs : EventArgs
{
public string Message { get; set; }
}
public delegate void AlertEventHandler(object sender, AlertEventArgs e);
public class AlertManager
{
public event AlertEventHandler AlertReceived;
protected virtual void OnAlertReceived(AlertEventArgs e)
{
AlertReceived?.Invoke(this, e);
}
public void SendAlert(string message)
{
OnAlertReceived(new AlertEventArgs { Message = message });
}
}
public class AlertSubscriber
{
public void Subscribe(AlertManager alertManager)
{
alertManager.AlertReceived += OnAlertReceived;
}
private void OnAlertReceived(object sender, AlertEventArgs e)
{
Console.WriteLine($"Alert received: {e.Message}");
}
}
消息隊列是一種異步通信機制,允許在不同的組件之間傳遞消息。這種方式可以實現解耦和緩沖,確保消息在發送和接收之間的可靠傳遞。
示例代碼(使用System.Threading.Channels):
public class AlertMessage
{
public string Content { get; set; }
}
public class AlertQueue
{
private Channel<AlertMessage> _channel;
public AlertQueue()
{
_channel = Channel.CreateUnbounded<AlertMessage>();
}
public async Task EnqueueAsync(AlertMessage message)
{
await _channel.Writer.WriteAsync(message);
}
public async Task<AlertMessage> DequeueAsync()
{
return await _channel.Reader.ReadAsync();
}
}
public class AlertProducer
{
private AlertQueue _alertQueue;
public AlertProducer(AlertQueue alertQueue)
{
_alertQueue = alertQueue;
}
public async Task SendAlertAsync(string message)
{
await _alertQueue.EnqueueAsync(new AlertMessage { Content = message });
}
}
public class AlertConsumer
{
private AlertQueue _alertQueue;
public AlertConsumer(AlertQueue alertQueue)
{
_alertQueue = alertQueue;
}
public async Task ProcessAlertsAsync()
{
while (true)
{
var alert = await _alertQueue.DequeueAsync();
Console.WriteLine($"Alert received: {alert.Content}");
}
}
}
這些示例展示了如何在C#中實現Alert消息的傳遞機制。你可以根據實際需求選擇合適的方法。