Dal this post, mi è stato detto che la seguente sezione di codice ha sofferto "dell'atto egregio di chiusura sulla variabile del ciclo".Closing over the Loop Variable in C#
foreach (Canidate canidate in allCanidates)
{
Thread newThread = new Thread(delegate()
{
BusyWait(canidate);
});
newThread.Start();
}
sono passato a questo:
foreach (Canidate canidate in allCanidates)
{
var can = canidate;
Thread newThread = new Thread(delegate()
{
BusyWait(can);
});
newThread.Start();
}
Ma il mio capo continua a insistere che soffrirà gli stessi problemi. Ho usato il link this per cercare di risolvere questo problema. Qualcuno può aiutarmi a risolvere correttamente il problema in modo che il mio codice verrà eseguito correttamente. questo problema è tutto nuovo per me, e non sono sicuro di averlo capito appieno.
Il tuo capo ha torto. –
E ha i capelli a punta. –
Qualcuno può spiegare perché è così? Non sono sicuro di averlo capito appieno. Qual è esattamente la differenza tra i due, perché a me sembra che stiano facendo esattamente la stessa cosa. Tuttavia, quando lo eseguo, so che non lo sono. – user489041