Formu tam ekrana alınca while döngüsü yavaşlıyor.
Nasıl çözebilirim?
if (serialPort1.IsOpen)
{
bağlantı_durumu.Text = "Bağlı";
kronometre_durumu.Text = "Hazır";
while (true)
{
try.
{
string okunan_değer = serialPort1.ReadLine();
int sure = Convert.ToInt32(okunan_değer);
int salise = (sure / 10) % 100;
int saniye = (sure / 1000) % 60;
int dakika = (sure / 1000) / 60;
kronometre_durumu.Text = "Başlatıldı";
zaman = dakika.ToString("00") + ":" + saniye.ToString("00") + ":" + salise.ToString("00");
if (Convert.ToInt32(okunan_değer) == 7)
{
kronometre_durumu.Text = "Durduruldu";
break;
}
sayac.Text = zaman;
}
catch (Exception)
{
MessageBox.Show("Lütfen Bağlantıyı Kontrol Ediniz", "Bilgilendirme", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
while (true)
{
try.
{
string okunan_değer = serialPort1.ReadLine();
if (Convert.ToInt32(okunan_değer) == 10)
{
kronometre_durumu.Text = "Hazır";
break;
}
}
catch (Exception)
{
MessageBox.Show("Lütfen Bağlantıyı Kontrol Ediniz", "Bilgilendirme", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
Şöyle deneyin 1 adet daha form ekleyin form1 kodlarını form2 ye geçirin ve form1 den kodları silin daha sonra programı başlattığınızda form1 i kapatın yani form1 kapatma kodu ekleyinYok sadece SERİALPORT'dan veri alıp LABEL'e yazdırma var.
Daha doğrusu şöyle deyim.C#:if (serialPort1.IsOpen) { bağlantı_durumu.Text = "Bağlı"; kronometre_durumu.Text = "Hazır"; while (true) { try. { string okunan_değer = serialPort1.ReadLine(); int sure = Convert.ToInt32(okunan_değer); int salise = (sure / 10) % 100; int saniye = (sure / 1000) % 60; int dakika = (sure / 1000) / 60; kronometre_durumu.Text = "Başlatıldı"; zaman = dakika.ToString("00") + ":" + saniye.ToString("00") + ":" + salise.ToString("00"); if (Convert.ToInt32(okunan_değer) == 7) { kronometre_durumu.Text = "Durduruldu"; break; } sayac.Text = zaman; } catch (Exception) { MessageBox.Show("Lütfen Bağlantıyı Kontrol Ediniz", "Bilgilendirme", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } while (true) { try. { string okunan_değer = serialPort1.ReadLine(); if (Convert.ToInt32(okunan_değer) == 10) { kronometre_durumu.Text = "Hazır"; break; } } catch (Exception) { MessageBox.Show("Lütfen Bağlantıyı Kontrol Ediniz", "Bilgilendirme", MessageBoxButtons.OK, MessageBoxIcon.Warning); } } }
Form arka planda çalıştığı süre de while yavaşlıyor.
Şöyle deneyin 1 adet daha form ekleyin form1 kodlarını form2'ye geçirin ve form1'den kodları silin daha sonra programı başlattığınızda form1'i kapatın yani form1 kapatma kodu ekleyin.
Şöyle deneyin 1 adet daha form ekleyin form1 kodlarını form2'ye geçirin ve form1'den kodları silin daha sonra programı başlattığınızda form1'i kapatın yani form1 kapatma kodu ekleyin.
Program başladığında form1 kapansın yani.
Şöyle deneyin 1 adet daha form ekleyin form1 kodlarını form2'ye geçirin ve form1'den kodları silin daha sonra programı başlattığınızda form1'i kapatın yani form1 kapatma kodu ekleyin.
Program başladığında form1 kapansın yani.
Çünkü bilişim hocamız form1 hep main form olduğu için diğer formlara göre daha ağır çalışır demişti oradan bir mantık yürüttüm umarım olur.
İki adet döngü kullanmanın mantığı yok. Kodu tek döngüye indirebilirsin.
Asenkron veri okurken döngüyü ana thread üzerinde çalıştırmayın. İkinci bir thread kullanırsanız sorununuz çözülür muhtemelen.
Şöyle deneyin 1 adet daha form ekleyin form1 kodlarını form2'ye geçirin ve form1'den kodları silin daha sonra programı başlattığınızda form1'i kapatın yani form1 kapatma kodu ekleyin.
Program başladığında form1 kapansın yani.
Çünkü bilişim hocamız form1 hep main form olduğu için diğer formlara göre daha ağır çalışır demişti oradan bir mantık yürüttüm umarım olur.
İsterseniz bilişim hocamın YouTube kanalını verebilirim bir videonun altına yorum olarak sorunuzu yazabilirsiniz çok iyi birisi kendisi.
c# videoları aşağıya doğru inerseniz göreceksiniz kanal linki: Atilla ÇetinDediğiniz gibi tek döngüye indirdim ve 3 thread kullanıyorum.
Ancak sorunun başka bir şey de olduğunu düşünüyorum yani arka planda çalışma da yavaşlamanın.
Olabilir hocam ancak bildiğim kadarıyla ana formu kapatamıyoruz siz yine de hocanızın kanalını verirseniz sevinirim.
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.