C# Kodlanan kronometrenin telefondaki kronometreden hızlı olması nasıl düzeltilir?

Tahhatass

Decapat
Katılım
29 Haziran 2021
Mesajlar
154
Daha fazla  
Cinsiyet
Erkek
C#:
public Form1()
        {
            InitializeComponent();
            timer1.Interval = 1;
        }
        double salise=0;
        int saniye=0;
        int dakika=0;
        int saat=0;
        int toplamSure = 0;
        double hesap = 0;
        bool basla = false;
        private void btnBaslat_Click(object sender, EventArgs e)
        {
            if (basla == false)
            {
                timer1.Start();
                basla = true;
                btnBaslat.Enabled = false;

                btnDurdur.Enabled = true;
                btnSifirla.Enabled = true;
            }
          
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            salise++;
            txtSalise.Text = salise.ToString();
            if (salise == 59)
            {
                salise = 0;
                saniye++;
              
                if (saniye == 59)
                {
                    saniye = 0;
                    dakika++;
                  

                    if (dakika == 59)
                    {
                        saat++;
                        dakika = 0;
                      
                    }
                }
            }
            txtSaniye.Text = saniye.ToString();
            txtDakika.Text = dakika.ToString();
            txtDakika.Text = dakika.ToString();
            toplamSure++;
        }
        public void durdur()
        {
            timer1.Stop();
            if (toplamSure > 0)
            {
                btnBaslat.Text = "Continue";
            }
            basla = false;
            btnBaslat.Enabled = true;
            btnDurdur.Enabled = false;
        }
        public void sifirla()
        {
            saniye = 0;
            salise = 0;
            dakika = 0;
            saat = 0;
            durdur();
            txtDakika.Text = dakika.ToString();
            txtSaat.Text = saat.ToString();
            txtSalise.Text = salise.ToString();
            txtSaniye.Text = saniye.ToString();
            btnBaslat.Text = "Start";
            toplamSure = 0;
            btnBaslat.Enabled = true;
            btnSifirla.Enabled = false;

            if (toplamSure > 0)
            {
                btnDurdur.Enabled = true;
            }
            else
            {
                btnDurdur.Enabled = false;
            }
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void btnSifirla_Click(object sender, EventArgs e)
        {
            sifirla();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            txtDakika.Text = dakika.ToString();
            txtSaat.Text = saat.ToString();
            txtSalise.Text = salise.ToString();
            txtSaniye.Text = saniye.ToString();
            btnDurdur.Enabled = false;
            btnSifirla.Enabled = false;
        }

        private void btnDurdur_Click(object sender, EventArgs e)
        {
            durdur();
          
        }


Arkadaşlar sorum şu. Yukarıdaki kod 1 salise olunca salise değişkenini 1 arttırıyor. Salise değişkeni 59 olunca sıfırlanıyor ve saniyeyi 1 arttırıyor. fakat telefonumdaki kronometre ile test ettiğim zaman ilerleyen saniyede benim yaptığım kronometre 43 saniye iken telefondaki kronometre 40 saniye falan oluyor. Benim uygulamamın neden öne geçtiğini anlamadım. İnternetten de araştırdım ve 1 saniyenin 60 salise olduğunu öğrendim. Yardım edin.
 
Çünkü salise farklı bir şey milisaniye farklı şey. Timeinterval salise değil milisaniye değeri alıyor. 1 saniye 60 salisedir ama 60 milisaniye değildir. 1000milisaniyedir.
Yazdığın kodun 40 saniyede 3 saniye kayması çok ilginç bundan çooook daha fazla hızlı sayması lazım, yanlış mı anladım acaba. Bir saniye içinde 16 saniye falan geçmesi lazım aslında.

Çok karışık olduysa şöyle söyleyeyim. Sen Timer'ın intervalına 1 yazdığın zaman 1 saniye içinde 1000 defa çalışıyor methodun.
 
Çünkü salise farklı bir şey milisaniye farklı şey. Timeinterval salise değil milisaniye sayıyor. 1 saniye 60 salisedir ama 60 milisaniye değildir. 1000milisaniyedir.
Yazdığın kodun 40 saniyede 3 saniye kayması çok ilginç bundan çooook daha fazla hızlı sayması lazım, yanlış mı anladım acaba. Bir saniye içinde 16 saniye falan geçmesi lazım aslında.

Çok karışık olduysa şöyle söyleyeyim. Sen Timer'ın intervalına 1 yazdığın zaman 1 saniye içinde 1000 defa çalışıyor methodun.
İnternetten yaptığım araştırmada salise ile milisaniyenin aynı olduğunu gördüm. Intervali 16 yaptığım zaman çok geride 15 yaptığım zaman ise ile önde oluyor.
 
İnternetten yaptığım araştırmada salise ile milisaniyenin aynı olduğunu gördüm. Intervali 16 yaptığım zaman çok geride 15 yaptığım zaman ise ile önde oluyor.
Salise ile milisaniye nasıl aynı olabilir salise bir saniyenin 60'da biri iken, milisaniye saniyenin 1000'de biri.
1000'i 60'a tam bölemediğin için onu simule etmen mümkün değil. 16 yaparsan az gelir, 17 yaparsan çok. Normal.
 
Salise ile milisaniye nasıl aynı olabilir salise bir saniyenin 60'da biri iken, milisaniye saniyenin 1000'de biri.
1000'i 60'a tam bölemediğin için onu simule etmen mümkün değil. 16 yaparsan az gelir, 17 yaparsan çok. Normal.
Peki nasıl kronometre yapabilirim veya kodumu nasıl düzeltmeliyim?
 

Yeni konular

Geri
Yukarı