Visual Studio C# Form Uygulaması Hızlandırma

Bu konuyu okuyanlar

BugraSahinn

Öğrenci
Katılım
21 Kasım 2018
Mesajlar
58
Reaksiyon puanı
2
Puanları
8
Yaş
29
Bir soru programı hazırlıyorum. Bu soru programında "button1.Location = new Point(1000, 250);" bu kodu kullanınca işlem gerçekleşirken program kasıyor.
Her soruda butonlar farklı konumlara gidiyor.
Butonların yerinin değişmesi 2-3 sn sürüyor.
Bunun önüne nasıl geçerim ?
Şimdiden teşekkürler.
 

Samet UCA

Müdavim
Katılım
3 Ağustos 2012
Mesajlar
3,277
Reaksiyon puanı
2,912
Puanları
113
Programlamada instance üretmek çok pahalı bir işlemdir. Mümkün olduğunca "new" kullanmaktan kaçmalısın. Sadece gerektiği durumlarda.
Sen yukarda ki kodu her kullandığında bellekte yeni bir yer açılır. Zaten 1 kere açmamız yeterli değil mi? 1 kere açtıktan sonra açılan o yer üzerinden işlem yapabilirsin. Mesela;
C#:
button1.Location = new Point(100, 100); // Yeni instance ürettik
// ilk 100 X ikinci 100 ise Y kordinatını gösterir.
button1.Left = 100; yada button1.Left += 100; // Left = X
button1.Top = 100; yada button1.Top += 100; // Left = Y
 

BugraSahinn

Öğrenci
Katılım
21 Kasım 2018
Mesajlar
58
Reaksiyon puanı
2
Puanları
8
Yaş
29
button1.Location = new Point(100, 100);
Bu kodu tek bir defa açıp bir sürü kez kullanabilir miyim?
İf ler içinde kullanmam lazım.
 

Samet UCA

Müdavim
Katılım
3 Ağustos 2012
Mesajlar
3,277
Reaksiyon puanı
2,912
Puanları
113
Tabi ki kullanabilirsiniz. Bir kere açmanız gerekiyor defalarca açtığınız için belleğe çok yükleniyorsunuz bu sebeple kasılmalar olur.
button1(.) yazdığınız zaman gerekli kodların gelmesi gerekiyor. Eğer gelmez ise
Button1 button1 = new Button1(); diyerek instance alır ve button1 şeklinde her döngü içerisinde kullanabilirsiniz.
 

BugraSahinn

Öğrenci
Katılım
21 Kasım 2018
Mesajlar
58
Reaksiyon puanı
2
Puanları
8
Yaş
29
Ama bende 4 farklı buton var hepsi için farklı açacağım ve 6 defa farklı koordinat girmem gerekiyor.
Mesaj otomatik birleştirildi:

Tabi ki kullanabilirsiniz. Bir kere açmanız gerekiyor defalarca açtığınız için belleğe çok yükleniyorsunuz bu sebeple kasılmalar olur.
button1(.) yazdığınız zaman gerekli kodların gelmesi gerekiyor. Eğer gelmez ise
Button1 button1 = new Button1(); diyerek instance alır ve button1 şeklinde her döngü içerisinde kullanabilirsiniz.
tamam teşekkürler
 

Samet UCA

Müdavim
Katılım
3 Ağustos 2012
Mesajlar
3,277
Reaksiyon puanı
2,912
Puanları
113
4 farklı component üzerinden işlem yapılacaksa o zaman çalışma zamanı esnasında yapılmaması daha uygun olur. Yani programın açılış esnasında bunu yapmak daha doğru olacaktır. Sonrasında çalışma esnasında instance almadığınız için programda kasma olmaz. Bu durumda açılış yavaşlayabilir. Ama kodlama standartlarına aykırı değil.
Button1 button1 = new Button1();
Button2 button1 = new Button2();
Button3 button1 = new Button3();
Button4 button1 = new Button4();
 

BugraSahinn

Öğrenci
Katılım
21 Kasım 2018
Mesajlar
58
Reaksiyon puanı
2
Puanları
8
Yaş
29
Senide oyalıyorum ama ben her if de aşağıdaki komutların koordinatlarını değiştirip kullanıyordum.
button1.Location = new Point(100, 250);
button2.Location = new Point(2000, 150);
button3.Location = new Point(100, 1000);
button4.Location = new Point(2000, 1000);
Ben şimdi tek bir defa yazıp diğerlerinde hangi komut ile kullanmam lazım.
Mesaj otomatik birleştirildi:

Tamam anladım.
button1.Left = 100; yada button1.Left += 100; // Left = X
button1.Top = 100; yada button1.Top += 100; // Left = Y
bu komutlar yeterli oluyor
 

Samet UCA

Müdavim
Katılım
3 Ağustos 2012
Mesajlar
3,277
Reaksiyon puanı
2,912
Puanları
113
Önemli değil takıldığın noktalarda biliyorsam yardımcı olmaya çalışırım.
 

BugraSahinn

Öğrenci
Katılım
21 Kasım 2018
Mesajlar
58
Reaksiyon puanı
2
Puanları
8
Yaş
29
Asıl sıkıntı butonun koordinatı değişiyor değiştiği konumda kendi gibi bir beyazlık bırakıyor ondan sonra beyazlık gidiyor buton geliyor.
 

Ekli dosyalar

  • IMG_8451.JPG
    IMG_8451.JPG
    35.1 KB · Görüntüleme: 193
  • IMG_8452.JPG
    IMG_8452.JPG
    37.6 KB · Görüntüleme: 199
  • IMG_8467.JPG
    IMG_8467.JPG
    51.1 KB · Görüntüleme: 219
Üst