se si cerca ci utilizzare un oggetto o elemento di un'altra sessione, per esempio in un background o in un'atra form, potrebbe dare un errore dei tipo

Cross-thread operation not valid

una soluzione é quella di escludere dopo l'inizializzazione del Form ogni controllo nel software di accessi illegali nelle varie sessioni con
Control.CheckForIllegalCrossThreadCalls = false;

ma potrebbe dare altri problemi quindi si sconsiglia



per i metodi che non restituiscono un valore si può usare questa sintassi

BeginInvoke((Action)delegate () {codice ... });
BeginInvoke((MethodInvoker)delegate () {codice ... }); alternativa

esempio: eseguo un aggiornamento di una CheckedListBox tramite array
for (int x = 0; x < array.Length - 1; x++)
{

BeginInvoke((Action)delegate () {CheckedListBox.Items.Add(array[x]);});
}