我想要一个事件通知系统,当病人的心跳超过120时应该通知医生。我不知道,如何设计这样的系统。只是我实施了错误的一个。帮助我实现正确的一个。C# - 事件设计注意事项
static void Main()
{
Patient[] patList = { new Patient
{ PatientID = "1", HeartBeat = 100 },
new Patient { PatientID = "2", HeartBeat = 130 } };
List<Patient> plist = patList.ToList();
Console.ReadKey(true);
}
public class Doctor
{
public event PulseNotifier AbnormalPulseRaised;
public string Name
{
get;
set;
}
}
public class Patient
{
public event PulseNotifier AbnormalPulseRaised;
static Random rnd = new Random();
public Patient()
{
PulseNotifier += new PulseNotifier(OnAbnormalPulseRaised);
}
public string PatientID
{
get;
set;
}
public int HeartBeat
{
get;
set;
}
public void HeartBeatSimulation(List<Patient> patList)
{
foreach(Patient p in patList)
{
if (p.HeartBeat > 120)
{
if (AbnormalPulseRaised != null)
{
AbnormalPulseRaised(p);
}
}
}
}
public void OnAbnormalPulseRaised(Patient p)
{
Console.WriteLine("Patient Id :{0},Heart beat {1}",
p.PatientID, p.HeartBeat);
}
}
除此之外,我想有一个共同的说明。
记住发布者和观察者模式的最佳方式是什么?因为我很困惑在哪里实现发布者和在哪里实施
@Stormenet未引发事件。 – user215675 2009-11-26 10:32:22
好吧,它现在可以工作,因为没有应用程序循环,所以需要使用System.Threading.Timer而不是System.Windows.Forms.Timer :) – Stormenet 2009-11-26 11:01:17