Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
e mi da l'errore: cross-thread exception.
Allora cercando in internet ho capito qual è il problema (accedo ai controlli della windows form da un thread diverso da quello che li ha creati); ed ho anche letto che tutti usano i delegati per risolvere; solo che su internet ho trovato solo casi in cui volevano modificare, invece io non modifico niente, io voglio LEGGERE i valori.
//funzione che leggi i dati
private string GetText(Control control)
{
if (control.InvokeRequired)
{
control.Invoke(new getTextDelegate(GetText));
return control.Text;
}
return control.Text;
}
Solo che non capisco perchè mi da questo errore:
Eccezione di tipo 'System.Reflection.TargetParameterCountException' in System.Windows.Forms.dll non gestita nel codice utente
Ulteriori informazioni: Mancata corrispondenza nel numero dei parametri.
Ok, alla fine ho risolto; ho trovato su internet che facevano in questo modo:
//funzione che leggi i dati
private string GetText(Control control)
{
if (control.InvokeRequired)
{
string res = "";
->-> var action = new Action<Control>(c => res = c.Text);
control.Invoke(action, control);
return res;
}
string valore = control.Text;
return valore;
}
Però non so cosa significa la riga evidenziata
cos è un action? cosa vuol dire "=>" ?
Please mi potete spiegare meglio il funzionamento di tutto cio?
E magare se ci sono anche altri metodi per fare la stessa cosa, ad esempio senza usare i delegati, me lo potete dire per favore?
Un super grazie in anticipo