Tnx!
Si, effettivamente ho trovato qualcosa riguardo l'Invoke ma per certi versi è un pò castrante, non riesco ad usarlo come vorrei io.
In compenso con il Timer invece ho ottenuto qualcosa di funzionale e al contempo semplice.
Va comunque usato l'Invoke anche in questo caso altrimenti da l'eccezione cross-threading, ma è semplice.
Una volta premuto button1 viene avviato un Timer che attende 2 secondi prima di eseguire l'operazione su texBox1.codice:delegate void SetTextCallback(string text); private void button1_Click(object sender, EventArgs e) { System.Threading.Timer tm = new System.Threading.Timer(new TimerCallback(Esegui)); tm.Change(2000, 0); } private void Esegui(object Tmr) { System.Threading.Timer timer = (System.Threading.Timer)Tmr; timer.Dispose(); this.SetText("Eseguito"); } 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; } }
Durante questi 2 secondi l'applicativo risulta utilizzable e non rallentato.

Rispondi quotando