Rank: Newbie Groups: Member
Üyelik Tarihi: 5/12/2008 Mesaj Sayısı: 1 Puan: -94
|
ben şöyle bir durum ile karşılaştım;
Thread ThreadDeneme1; private delegate void dcombobox2(int sayi); private void button4_Click(object sender, EventArgs e) { progressBar1.Minimum = 0; progressBar1.Maximum = 1000000; ThreadDeneme1 = new Thread(new cm2yesayiekle1)); ThreadDeneme1.Start(); }
private void cm2yesayiekle1(int sayi) { if (progressBar1.InvokeRequired) {
dcombobox2 xxx = new cm2yesayiekle1); progressBar1.Invoke(xxx, new object[] { sayi } else { for (int i = 0; i < 1000000; i++) { progressBar1.Value = i; } }
}
buradaki thread çalışıyor fakat thread mantıgına aykırı olarak çalışıyor yani for dongüsünden dolayı Form donuyo kalıyo. Böyle bir durumu nasıl Çözebilirim?
|
Rank: Newbie Groups: Member
Üyelik Tarihi: 5/31/2008 Mesaj Sayısı: 1 Puan: 3 Nerden: İstanbul
|
Selamlar, for döngü içerisinde Application.DoEvents metodunu çağırırsan belki istediğin sonucu alabilirsin. Form evetlerin bitmesini bekliyor bu yüzden kitlenmiş gibi oluyor Application.DoEvents methodu bekleyen işlemleri kullanıcıya yansıtıyor burdada bekleyen işlem progress barın görselliği örneğin. performas açısından ne şekilde bir etkisi olur bakmak lazım ama 1000000 kere çağırmak yerine bunuda 1000 seferde bir yapabilirsin. umarım çözüm olabilir.Bilgi verirsen sevinirim.
|