alarm programı donuyor

Başlatan berkay_91, 01 Ağustos 2016, 20:02:54

berkay_91


Mrb, alarmı aç butonuna bastıktan sonra program label da zamanı gösteremediği gibi birde donuyor neyi değiştirmem gerekiyor?



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 WindowsFormsApplication5
{
    public partial class Form1 : Form
    {

        int knt = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void alarm()
        {
            while(knt==0){

                if ( textBox1.Text == DateTime.Now.ToShortDateString() && textBox2.Text == DateTime.Now.ToLongTimeString() )
                {
                    MessageBox.Show("Alarm");
                }

            }

            knt = 0;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            button2.Enabled = true;
            button1.Enabled = false;
            this.Text = "Alarm Açık";
            alarm();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            button1.Enabled = true;

            this.Text = "Alarm Kapalı";
            knt = 1;
            MessageBox.Show("Alarm kapandı");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = DateTime.Now.ToShortDateString();
            textBox2.Text = DateTime.Now.ToLongTimeString();
            timer1.Enabled = true;
            timer1.Interval = 1000;

            this.Text = "Alarm Kapalı";

            button1.Enabled = true;
            button2.Enabled = false;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label4.Text = DateTime.Now.ToLongTimeString();
            label6.Text = DateTime.Now.ToShortDateString();
        }

    }
}


Kabil ATICI

private void button1_Click(object sender, EventArgs e)
        {
            button2.Enabled = true;
            button1.Enabled = false;
            this.Text = "Alarm Açık";
            alarm();  //<-- bu fonksiyonla ilgili bir sıkıntın var.
        }

Verdiğin kodlarda alarm() fonksiyonu ile ilgili bir bilgi yok... Her ne varsa onda var... Devam edip etmediğini kontrol etmen kolay. O satırı sil ve dene...
ambar7

berkay_91

private void alarm()
        {
            while(knt==0){

                if ( textBox1.Text == DateTime.Now.ToShortDateString() && textBox2.Text == DateTime.Now.ToLongTimeString() )
                {
                    MessageBox.Show("Alarm");
                }

            }

            knt = 0;

        }


button1 e tıklandığında bu fonksiyonun içine girmesi gerekmez mi?

Kabil ATICI

            while(knt==0){

                if ( textBox1.Text == DateTime.Now.ToShortDateString() && textBox2.Text == DateTime.Now.ToLongTimeString() )
                {
                    MessageBox.Show("Alarm");
                }

            }

burada döngünün içine girdiği zaman o şartı nasıl sağlayarak çıkacak.
eğer o şartı sağlayacak şekilde bir durum yoksa sonsuz döngüye girer kilitlenir. Alarm() fonksiyonuna girerken, şart sağlanırsa döngüye girmeden terk eder.
Eğer burada özel bir amacın yoksa while yerine  if kullanabilirsin.

Alarm fonksiyonunda bu şartı sağlayacak öğeyi eklemişsin ama while döngüsüne etkisi olmaz.
ambar7

berkay_91

#4
button2 ye bastığımda knt=1 oluyor ama çıkma şartını yazmamışım doğru söylüyorsunuz, böyle olması gerekiyordu

private void alarm()
        {
            while(knt==0){

                if ( textBox1.Text == DateTime.Now.ToShortDateString() && textBox2.Text == DateTime.Now.ToLongTimeString() )
                {
                    MessageBox.Show("Alarm");
                    knt=1;
                }

            }

            knt = 0;

        }


fonksiyonun içinde while döngüsünü kullanmamdaki amacım kullanıcı sadece alarmı kurduğu zaman program alarm zamanını kontrol etsin, alarm çalınca yada kullanıcı alarm kuruluyken alarmı kapattığında kontrolü kesssin