How to make an Alarm clock in C#
By FoxLearn 11/21/2024 3:08:05 PM 13.99K
When the current time matches the alarm time, the alarm will trigger.
How to make an Alarm clock in C#?
Open Visual Studio, then click New Project, then select Visual C# on the left, then Windows and then select Windows Forms Application. Name your project "AlarmClock" and then click OK
Drag and drop the DateTimePicker, Lable, Button controls from Visual Toolbox onto your form designer, then design your form as shown below.
Add code to button click event handler as below
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace AlarmClock { public partial class Form1 : Form { // Initialize the alarm time System.Timers.Timer timer; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { // Set up the timer to tick every second timer = new System.Timers.Timer(); timer.Interval = 1000; timer.Elapsed += Timer_Elapsed; } // This method runs every time the timer ticks private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { DateTime currentTime = DateTime.Now; DateTime userTime = dateTimePicker.Value; // Check if current time matches the alarm time if (currentTime.Hour == userTime.Hour && currentTime.Minute == userTime.Minute && currentTime.Second == userTime.Second) { timer.Stop(); UpdateLable upd = UpdateDataLable; //Update label control in mutiple thread if (lblStatus.InvokeRequired) Invoke(upd, lblStatus, "Stop"); // Ensures thread-safe updates to the label control in a multi-threaded environment. // Trigger the alarm (play a sound, show a message, etc.) MessageBox.Show("Ring ring ring...", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); } } //Update label control delegate void UpdateLable(Label lbl, string value); void UpdateDataLable(Label lbl,string value) { lbl.Text = value; } // Starts the timer and updates the label to "Running...". private void btnStart_Click(object sender, EventArgs e) { timer.Start(); lblStatus.Text = "Running..."; } // Stops the timer and updates the label to "Stop". private void btnStop_Click(object sender, EventArgs e) { timer.Stop(); lblStatus.Text = "Stop"; } } }
Every time the timer ticks, the current time is compared with the time set by the user (via a DateTimePicker
).
If the current time matches the alarm time (hour, minute, second), the timer stops, and an alarm message box is shown with the text "Ring ring ring..."
.
The status label (lblStatus
) is updated to "Stop" using thread-safe invocation (Invoke
), ensuring the UI is updated properly from the timer's separate thread.
A delegate (UpdateLable
) is used to update the label (lblStatus
) in a thread-safe manner. The Invoke
method ensures the label is updated on the UI thread.
This example implements an alarm clock using a System.Timers.Timer
to check if the current time matches the alarm time set by the user.
VIDEO TUTORIAL
- How to update UI from another thread in C#
- How to get CheckedListBox selected values in C#
- How to use Advanced Filter DataGridView in C#
- How to create a Notification Popup in C#
- How to Use Form Load and Button click Event in C#
- How to Link Chart /Graph with Database in C#
- How to Check SQL Server Connection in C#
- How to Generate Serial Key in C#