📄 program.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example15_6
{
using System;
using System.ComponentModel;
/// <summary>
/// AlarmEventArgs类,包含了闹钟的事件
/// </summary>
public class AlarmEventArgs : EventArgs
{
/// <summary>
/// snoozePressed字段
/// </summary>
private readonly bool snoozePressed;
/// <summary>
/// nrings字段
/// </summary>
private readonly int nrings;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="snoozePressed"></param>
/// <param name="nrings"></param>
public AlarmEventArgs(bool snoozePressed, int nrings)
{
this.snoozePressed = snoozePressed;
this.nrings = nrings;
}
/// <summary>
/// NumRings属性,表示闹铃事件开始后,响铃的次数
/// </summary>
public int NumRings
{
get { return nrings; }
}
/// <summary>
/// SnoozePressed属性,表示闹钟按钮是否被按下
/// </summary>
public bool SnoozePressed
{
get { return snoozePressed; }
}
/// <summary>
/// AlarmText属性,表示闹铃文字
/// </summary>
public string AlarmText
{
get
{
if (snoozePressed)
{
return ("起床啦!起床啦!睡觉时间结束了!");
}
else
{
return ("起床啦!");
}
}
}
}
/// <summary>
/// 声明委托,
/// </summary>
/// <param name="sender">表示事件的引发者</param>
/// <param name="e">事件参数</param>
public delegate void AlarmEventHandler(object sender, AlarmEventArgs e);
/// <summary>
/// AlarmClock类,表示闹钟
/// </summary>
public class AlarmClock
{
/// <summary>
/// snoozePressed字段
/// </summary>
private bool snoozePressed = false;
/// <summary>
/// nrings字段
/// </summary>
private int nrings = 0;
/// <summary>
/// stop字段
/// </summary>
private bool stop = false;
/// <summary>
/// Stop属性,表示闹钟是否停止
/// </summary>
public bool Stop
{
get
{
return stop;
}
set
{
stop = value;
}
}
/// <summary>
/// SnoozePressed属性,表示闹铃按钮是否被按下
/// </summary>
public bool SnoozePressed
{
get
{
return snoozePressed;
}
set
{
snoozePressed = value;
}
}
/// <summary>
/// Alarm事件
/// </summary>
public event AlarmEventHandler Alarm;
/// <summary>
/// OnAlarm方法,引发Alarm事件
/// </summary>
/// <param name="e">事件参数</param>
protected virtual void OnAlarm(AlarmEventArgs e)
{
if (Alarm != null)
{
//调用委托
Alarm(this, e);
}
}
/// <summary>
/// Start方法,表示闹铃开始
/// </summary>
public void Start()
{
for (; ; )
{
nrings++;
if (stop)
{
break;
}
else if (snoozePressed)
{
System.Threading.Thread.Sleep(1000);
{
AlarmEventArgs e = new AlarmEventArgs(snoozePressed,
nrings);
OnAlarm(e);
}
}
else
{
System.Threading.Thread.Sleep(300);
AlarmEventArgs e = new AlarmEventArgs(snoozePressed,
nrings);
OnAlarm(e);
}
}
}
}
/// <summary>
/// WakeMeUp类,可以对闹铃事件进行处理
/// </summary>
public class WakeMeUp
{
/// <summary>
/// AlarmRang方法,类似于按钮的Click事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void AlarmRang(object sender, AlarmEventArgs e)
{
Console.WriteLine(e.AlarmText + "\n");
if (!(e.SnoozePressed))
{
if (e.NumRings % 10 == 0)
{
Console.WriteLine(" 继续闹铃,请输入 Y");
Console.WriteLine(" 按下闹铃按钮,请输入 N");
Console.WriteLine(" 停止闹铃,请输入 Q");
String input = Console.ReadLine();
if (input.Equals("Y") || input.Equals("y")) return;
else if (input.Equals("N") || input.Equals("n"))
{
((AlarmClock)sender).SnoozePressed = true;
return;
}
else
{
((AlarmClock)sender).Stop = true;
return;
}
}
}
else
{
Console.WriteLine(" 继续闹铃,请输入 Y");
Console.WriteLine(" 停止闹铃,请输入 Q");
String input = Console.ReadLine();
if (input.Equals("Y") || input.Equals("y")) return;
else
{
((AlarmClock)sender).Stop = true;
return;
}
}
}
}
/// <summary>
/// 主类,程序的流程在此类中
/// </summary>
public class Program
{
/// <summary>
/// Main方法
/// </summary>
/// <param name="args">运行参数</param>
public static void Main(string[] args)
{
//实例化事件接收者
WakeMeUp w = new WakeMeUp();
//实例化事件源
AlarmClock clock = new AlarmClock();
// 绑定AlarmRang方法到Alarm事件.
clock.Alarm += new AlarmEventHandler(w.AlarmRang);
//开始闹铃
clock.Start();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -