Da quanto ho capito, il modulo e tutti i relativi controlli grafici vengono eseguiti sul thread principale. Il modulo viene visualizzato dal thread principale e gli input da tastiera e mouse vengono ricevuti tramite il pump dei messaggi e vengono eseguiti sullo stesso thread principale. Credo anche che il codice che scrivi sia eseguito sullo stesso thread, a meno che tu non crei altri thread per l'esecuzione. Ad esempio, il codice che scrivi nel costruttore Form1 () verrà eseguito sullo stesso thread. Se crei un ciclo senza fine su quel thread, la GUI non verrà mai visualizzata.
In che modo il codice che scrivi per quel thread più gli eventi di input ricevuti dal pump dei messaggi vengono eseguiti tutti nello stesso thread? Inoltre, quando si utilizza Invoke su un delegato affinché venga eseguito sul thread principale, come viene eseguito sul thread principale quando il thread principale ha già un elenco di istruzioni in esecuzione. Non capisco come un thread possa avere una lista di istruzioni che sta eseguendo e quindi ricevere alcune istruzioni da un'altra parte per l'esecuzione. Ha il codice per controllare periodicamente (tra l'esecuzione di altre istruzioni) qualche coda? Posso capire se 2 percorsi di esecuzione sono eseguiti su thread diversi, ma non capisco che si trovano sullo stesso thread.