Dispatcher.BeginInvoke metodu arayüzü update etmiyor
Diyelim ki elimde bir liste var. Her bir liste öğesi bir kişiyi temsil ediyor ve kişinin ismini ve numarasını görüntülüyor. Bunun için bir class ya da User control oluşturduğumu varsayalım. "rehber" olarak tanımladığımız dictionary olsun. Bu dictionary nin key leri kişinin ismi, value leri ise o kişinin numarasıdır. Ayrıca kişileri eklediğimiz "kisilistesi" adında bir liste grafik arayüzü olsun. Elimde grafik arayüzü dondurmaya yetecek çoğunlukta kişi olduğu zaman doğal olarak arayüzü dondurmamak ve kullanıcının canını sıkmamak için bir "lstekle" adında bir backgroundworker kullanmam çok mantıklı olacaktır. Bu backgroundworker ın DoWork eventi lstekle_DoWork olarak tanımlayıp aşağıdaki kodu oluşturduğumda kişi itemlerinin bir bir eklenmesini bekliyorum. Ancak windows phone emulatoru tüm kişileri aldıktan sonra grafik arayüze ekliyor. Eğer elimde 10000 tane kişi varsa bu durmda 10 sn boyunca listeye hiçbirşey eklenmiyor sonra aynı anda hepsi birden ekleniyor. Bu durumu nasıl çözebilirim?
private void lstekle_DoWork(object sender, DoWorkEventArgs e)
{
// Dispatcher.BeginInvoke(() => workeris());
foreach (KeyValuePair<string, string> item in rehber)
{
Dispatcher.BeginInvoke(() =>
{
Person kisi = new Person();
kisi.isim.Text = item.Key;
kisi.numara.Text = item.Value;
kisilistesi.Items.Add(kisi);
});}
}