C# ile alarm yapma konusunda sizlerle birlikte adım adım her şeyi öğreneceğiz sevgili okurlarım. Alarm yapmak için form dizaynımı aşağıda ki gibi düzenledim.
1 adet PictureBox, 2 adet buton, 1 adet dateTimePicker ve gerçek zamanlı güncel saati görmek için 3 adet label ekledim.
Not: dateTimePicker özellikler kısmında format özelliğini Time olarak değiştiriniz. Böylece saat formatında karşınıza gelecektir.
Dizayn bölümünü tam olarak yaptıysanız şimdi sizlerle birlikte Kodlarımız yazmaya başlayalım. Bu projemizde aşağıda ki ders konuları kullanılmış olup bilmediğiniz ders varsa lütfen kanalımdan izlemeyi yada sitemizden okumayı ihmal etmeyelim.
Proje kapsamında yararlanılan ders konuları
Timer Kullanımı
Thread Kullanımı
DateTime Kullanımı
Try Cath Kullanımı
SoundPlayer Kullanımı
While Döngüsü
Şimdi ilk olarak projemizie Timer sınıfını örnekleyerek kodlarımıza başlayalım. Aşağıda Zamanlama kelimesi ile Timer sınıfını atadım ama new anahtar kelimesi ile örneklemedim.
System.Timers.Timer Zamanlama;
1
2
System.Timers.Timer Zamanlama;
Şimdi ise Formumuzun load kısmına kodlarımızı yazmaya başlayalım.
Zamanlama = new System.Timers.Timer(); Zamanlama.Interval = 1000; Zamanlama.Elapsed += Zamanlama_Elapsed; Saat1();
1
2
3
4
Zamanlama = new System.Timers.Timer();
Zamanlama.Interval = 1000;
Zamanlama.Elapsed += Zamanlama_Elapsed;
Saat1();
Yukarda ki kod bloğunda Timer nesnemi new anahtar kelimesi ile örneklemesini yaptım. Ardından Zamanlama.Interval ile kaç saniyede bir işlem yapılacağını Milisaniye cinsinden belirledim. Burada her saniye olarak işlemimi belirttim. Zamanlama.Elapsed ise her 1 saniyede yapacağım işlemin ne olacağını belirteceğim yapıdır. Bu işlem için += operatörü kullanarak yeni bir metot oluşturdum.
private void Zamanlama_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { DateTime SimdikiZaman = DateTime.Now; DateTime SecilenZaman = dateTimePicker1.Value; if (SimdikiZaman.Hour==SecilenZaman.Hour&& SimdikiZaman.Minute== SecilenZaman.Minute&& SimdikiZaman.Second== SecilenZaman.Second) { Zamanlama.Stop(); try { SoundPlayer player = new SoundPlayer(); player.SoundLocation = @"D:\SESLER\at.wav"; player.PlayLooping(); } catch (Exception a) { MessageBox.Show(a.ToString()); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private void Zamanlama_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
DateTime SimdikiZaman = DateTime.Now;
DateTime SecilenZaman = dateTimePicker1.Value;
if (SimdikiZaman.Hour==SecilenZaman.Hour&& SimdikiZaman.Minute== SecilenZaman.Minute&& SimdikiZaman.Second== SecilenZaman.Second)
{
Zamanlama.Stop();
try
{
SoundPlayer player = new SoundPlayer();
player.SoundLocation = @"D:\SESLER\at.wav";
player.PlayLooping();
}
catch (Exception a)
{
MessageBox.Show(a.ToString());
}
}
Yukarda ki kod bloğunda aslında dananın kuyruğu kopmuştur. ŞimdikiZaman isminde anlık saati gösterer DateTime veri tipinde değişken oluşturdum. Ayrıca yine DateTime veri tipinde SecilenZaman isminde kullanıcının seçtiği saati yani dateTimePicker da ayarladığı saati değişkene atamış olduk. Elimizde iki adet DateTime tipinde değişken oldu.
Bundan sonra if şart bloklarını kullanarak kullanıcının girdiği saat ile güncel saatin aynı olması durumunda ne olsun şeklinde bir yapı yazdım. İf şartından kurtulursa daha önceden belirlediğim bir sesi SoundPlayer sınıfını kullanarak çalmasını sağladım.
Güncel Saatimizi Ayarlayalım
Burada faklı bir yaklaşımda bulunarak Thread sınıfını kullanmaya karar verdim. Bu sınıfı kullanmak için öncelikle form1″in yapıcı metoduna aşağıdaki kodu yazmamız gerekmekte aksi halde Thread metodunu kullandığımızda hata almamız içten bile değildir.
CheckForIllegalCrossThreadCalls = false;
1
CheckForIllegalCrossThreadCalls = false;
İlk olarak saatlerimi formuma eklediğim üç label saat dakika ve saniye cinsinden yazdırmak istiyorum. Bu nedenle metodumu aşağıda ki gibi oluşturdum
private void Saat() { while (true) { label2.Text = DateTime.Now.Hour.ToString(); label3.Text = DateTime.Now.Minute.ToString(); label4.Text = DateTime.Now.Second.ToString(); } }
1
2
3
4
5
6
7
8
9
10
11
private void Saat()
{
while (true)
{
label2.Text = DateTime.Now.Hour.ToString();
label3.Text = DateTime.Now.Minute.ToString();
label4.Text = DateTime.Now.Second.ToString();
}
}
Burada while döngümü sonsuz döngüye sokarak sürekli olarak labellarımın isimlerini güncel saat dakika ve saniye olarak güncellemesini istedim. Tabi bu metodumu Thread ile çalıştırmak istediğim için Yen bir metot tanımlaması daha yaptım ve bu metot ise aşağıda ki gibidir.
private void Saat1() { Thread Th1 = new Thread(Saat); Th1.Start(); }
1
2
3
4
5
6
7
private void Saat1()
{
Thread Th1 = new Thread(Saat);
Th1.Start();
}
C# ile alarm yapmak için son aşamalara geçtik diyebilirim. Yukarda ki metotda sadece Thread olayını çalışmasını sağladım.
Şimdide Başlat ve Durdur butonlarıma yazıcağım kodu belirliyorum.
Alarmı Kur isimli butonuma Zamanlama.Start(); Durdur isimli butonumun click olayına ise Zamanlama.Stop(); ve player.Stop(); diyerek çalan butonumuzu durduruyoruz.
Bu işlem ile birlikte alarmımız kullanıma hazırdır. Lütfen tüm sınıfları anlayarak kodlarınızı yazınız ve mutlaka eğitici videomu izlemenizi öneririm.
Sevgili takipçilerimiz sizler için bir çok alanda bilgilenmeniz için eğitim videoları çekerek sizlere hizmet etmeye çalışmaktayım. Bu nedenle biz yeni kurulan bir aileyiz ve bu ailenin yeni üyelere ihtiyacı vardır. Bu nedenle sizleri ailemizde görmeyi çok isterim. Youtube kanalıma abone olarak sizde Web pazarı ailemize katılabilirsiniz. Kanalıma ulaşmak için BURAYA TIKLAYABİLİRSİNİZ
Bu yazımızda anlattığım konu ile ilgili yapamadığınız yada kafanıza takılan her soruyu sitemizin yorum kısmına yazarak cevap bulabilirsiniz.
Tweet
Pin It
About The Author
webpazari
Related Posts
C# Selenium Dersleri Konsol Ekranını Gizleme
by webpazari/
C# Selenium Ekran Görüntüsü Alma
by webpazari/
C# Delegate kullanımı
by webpazari/
C# Selenium Scroll kullanımı
by webpazari/
Leave a Reply
Cevabı iptal et
Bir dahaki sefere yorum yaptığımda kullanılmak üzere adımı, e-posta adresimi ve web site adresimi bu tarayıcıya kaydet.
Beni sonraki yorumlar için e-posta ile bilgilendir.
Beni yeni yazılarda e-posta ile bilgilendir.
Δ
{{#message}}{{{message}}}{{/message}}{{^message}}Gönderiminiz başarısız oldu. Sunucu, {{status_text}} ({{status_code}} kodu) ile yanıt verdi. Bu mesajı iyileştirmek için lütfen bu form işlemcisinin geliştiricisiyle iletişime geçin. Daha Fazla Bilgi{{/message}}
{{#message}}{{{message}}}{{/message}}{{^message}}Gönderiminizin başarılı olduğu görünüyor. Sunucu TAMAM yanıtı göndermiş olsa da gönderim işlenmemiş olabilir. Bu mesajı iyileştirmek için lütfen bu form işlemcisinin geliştiricisiyle iletişime geçin. Daha Fazla Bilgi{{/message}}