Questa è difficile
Dunque, sto cercando, e con non poche difficoltà, di passare ad un Thread il riferimento ad un oggetto Windows.Form, nello specifico una Label.
L'idea è questa, il Thread è uno ed asincrono, senza bloccare l'applicazione devo attendere un determinato tempo prima di avviare una certa funzione, quindi ho pensato, per coinciare, di provare a modificare in maniera asincrona il testo di una Label.
codice:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Prova_Thread pt = new Prova_Thread(ref this.label1);
Thread th = new Thread(pt.Esegui);
th.Start();
while (!th.IsAlive) ;
th.Join();
}
}
public class Prova_Thread
{
private volatile Label _Lbl;
private int _Conta;
public Prova_Thread(ref Label Lbl)
{
this._Lbl = Lbl;
this._Conta = 5;
}
public void Esegui()
{
while (this._Conta > 0)
{
this._Lbl.Text = this._Conta.ToString();
this._Conta--;
}
}
}
Come vedete al Click di button1 creao un Thread, al quale passo per riferimento la label1, successivamente avvio il Thread.
Internamente il Thread funziona bene finché non arriva all'istruzione this._Lbl.Text = this._Conta.ToString();
Quì s'incarta.
Ho già tentato in passato con oggetti come array o simili e mi è andata bene, ma questa è la prima volta che provo con oggetti strutturati come una Label.
Avete suggerimenti?
Grazie