2016-03-24 15 views
-1

Etiketimin metnini değiştirmeye çalışıyorum, bir sonraki formun açılmasından önce bir gecikme var. ama etiket metni değişmez ve sadece bekler?Etiket metni iş parçacığı uyumadan önce değişmez mi?

label3.Text = "loading tools"; 
     Thread.Sleep(2000); 
     Form4 frm = new Form4(); 
     frm.Show(); 
     this.Hide(); 
+0

“this.Refresh();” adını değiştirdikten hemen sonra ne olur? Ancak günümüzde bu tür bir şeye yaklaşmanın en doğru yolu, 'Task.Delay (2000) 'i beklemektir. –

+1

Genel olarak, bu tür şeyler çok iş parçacıklı olarak yapılmalıdır. Belirtilen araçları yükleyerek yeni bir iş parçacığı hazırlayın ve iş parçacığı bittiğinde "Form4" yaratın ve geçerli formu kapatmak için bir "Çağır" çağrısı yapın. _Never_, özellikle açık bir "Thread.Sleep()" ile değil, UI iş parçacığınızı engeller. Programın donmasını sağlıyor. – Nyerguds

cevap

0

Etiket metnini değiştirdikten sonra Application.DoEvents() ekleyin:

label3.Text = "loading tools"; 
Application.DoEvents(); 
Thread.Sleep(2000); 
Form4 frm = new Form4(); 
frm.Show(); 
this.Hide(); 
+1

“Application.DoEvents()' özelliğini kullanmamanı öneririm - bu, kötü bir yeniden girmeye neden olabilir. –

0

label3.Text = "yükleme araçları";

label3.Refresh();

Thread.Sleep (2000);

Form4 frm = new Form4();

frm.Show();

this.Hide();

İlgili konular