En iyi yanıtlayıcılar
döngüyü sonlandırma

Soru
-
merhabalar
c# da sonsuz döngüye giren bir döngü örneğin;
for (int i=0; i<20 ; i++)
{
................................. vsvs vs vs
if(i ==19)
{
i=0
}
}
bu döngü bu şekilde çalışıyor ama
döngüyü başka bir butona tıkladığımda durduracak bir komut satırına ihtiyacım var
program döngüye girdiğinde diğer işlevleri kabul etmiyor başka bir butona basamıyorum mesele
acemi mustafa
Yanıtlar
-
Aynı thread içinde bunu yapamazsın. Böyle bişeye ihtiyacın var ise başka yöntemler kullanmalısın, for while foreach bunlar neredeyse hiç kullanılmayan şeyler.
Örneğin;
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private bool durum { get; set; } = false; public long kontür { get; set; } = 0; private async void Say() { await Task.Run(() => { Invoke((Action)(() => { label1.Text = $"Sayıyorum : {++kontür}"; if (durum) Say(); else label1.Text = $"Durdum : {kontür}"; Application.DoEvents(); })); }); } private void button1_Click(object sender, EventArgs e) { durum = !durum; if (durum) Say(); } }
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Yanıt Olarak İşaretleyen acemi mustafa 6 Aralık 2019 Cuma 18:33
Tüm Yanıtlar
-
Aynı thread içinde bunu yapamazsın. Böyle bişeye ihtiyacın var ise başka yöntemler kullanmalısın, for while foreach bunlar neredeyse hiç kullanılmayan şeyler.
Örneğin;
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private bool durum { get; set; } = false; public long kontür { get; set; } = 0; private async void Say() { await Task.Run(() => { Invoke((Action)(() => { label1.Text = $"Sayıyorum : {++kontür}"; if (durum) Say(); else label1.Text = $"Durdum : {kontür}"; Application.DoEvents(); })); }); } private void button1_Click(object sender, EventArgs e) { durum = !durum; if (durum) Say(); } }
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Yanıt Olarak İşaretleyen acemi mustafa 6 Aralık 2019 Cuma 18:33
-
konuyu biraz daha açarsanız çok sevinirim
ben tam olarak şöyle bişey yapmak istiyorum
A BUTONUNA tıkladıgımda bir imagelist icerisine rastgele eklenmiş yüzlerce resmi for döngüsü ile sürekli olarak her 50 ms de bir pictureboxta gösteriyorum. (bü işlemi timer ile yapamıyorum çünkü seçilen resimler bana farklı dönüşler saglıyor)
bu noktada B butona tıkladıgım anda o anda hangi resimde kaldıysa orda kalsın devam etmesin. istiyorum ama
program for döngüsünde döndüğü için farklı bir butono tıkladıgımı okuyamıyor
acemi mustafa
-