Bilmek istediğin her şeye ulaş

Hangi listeleme kontrolü multithread ile hata vermeden çalışabilir?

listbox a, onu oluşturduğum main thread dışında, herhangi bir task ile ulaşamıyorum. dolayısıyla tasklerle elde ettiğim verileri listeleme yapamıyorum.Hata veriyor.Düzenle
Java ve C#'daki invoke thread'ler için uygun zamanda işi başlat demek. Android'de kullanılma nedeni bu. C#'da aynı mantığı uyguluyor bildiğim kadarıyla. Tüm ayrıntısı ile bildiğim bir konu değil. Ama microsoft kendi sitesinde bazı bilgiler vermiş: msdn.microsoft.com/library/3s8xdz5c(v=VS. 71) . aspx
  • Paylaş
1

Unluckypod, if (listBox1.InvokeRequired)
{
this.Invoke(new Action(() => MyFunction()));
return;
}
Eğer yukarıdakini yapınca şöle bi hata verirse de ki bende verdi;pencere işleyicisi hatası, bu sefer de şu şekilde yapınca düzeliyor.
//Fixed window handle issue.
if (!listBox1.IsHandleCreated)
listBox1.CreateControl();
//Updating the listbox
listBox1.Invoke(new MethodInvoker(ListBox_Ekleme));

Eğer arayüzdeki kontollerden bahsediyorsanız, arayüz elemanları thread safe değildir. Arayüzde bulunan kontroller uygulamanın main threadinde bulunduklarından dolayı, bir diğer thread ile arayüz kontrollerine erişilmeye çalışıldığında hata gerçekleşecektir. Bu durumu InvokeRequired ile bertaraf edebilirsiniz.

msdn.microsoft.com/en-us/library/ms17172...
  • Paylaş
Sonraki Soru
HESAP OLUŞTUR

İstatistikler

209 Görüntülenme4 Takipçi3 Yanıt