Una domanda sui controlli del modulo richiama la funzione.
Control1 viene creato su thread1.
Se si desidera aggiornare qualcosa in Control1 da thread2
devi fare qualcosa del tipo:
delegate void SetTextCallback(string txt);
void setText(string txt)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(setText);
this.Invoke(d, new object[] { txt });
}
else
{
// this will run on thread1 even when called from thread2
this.textBox1.AppendText(msg);
}
}'
Che cosa succede dietro le quinte qui?
Questo richiamo si comporta diversamente da un normale richiamo di oggetto. Quando si desidera chiamare una funzione in un oggetto su un thread specifico, quindi quel thread deve essere in attesa su qualche coda di delegati ed essere eseguito i delegati in arrivo.
È corretto che il controllo dei moduli di Windows invochi la funzione è completamente diverso dall'invocazione dell'oggetto standard Funzione?