Thursday, 15 December 2011

Update Textbox async

V primeru async nalaganja podatkov v formo in posodabljanja textboxov, itd. se vam lahko zgodi da dobite napako da je controla  kreirana v drugem threadu.
Pravilni način za posodobitev vrednosti textboxa in drugih kontrol je z uporabo delagatov in metode za posodobitev vrednosti v textboxu. Enostavno naredimo metodo, ki posodobit vrednost textboxa.
Kokončamo z async nalaganjem in želimo prirediti vrednost kličemo metodo za nastavitev texta, ona se pa odloči če je ali nastavi ali pa kliče nov thread za nastavitev vrednosti.

delegate void SetTextCallback(string text);
private void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this
.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}