J'ai le code ci-dessous qui produit une sortie incohérente. Parfois, il produit t1 et t2, et parfois il produit t2 double. Ce que je pense en ce moment, c'est ça. Lorsque la sortie est double t2, la valeur de la variable capturée du premier thread est t2 car elle a démarré après la dernière affectation de variable. Ai-je raison?Fil incohérent
Remarque: J'utilise ce code sur une machine lente.
Oui, vous avez raison – MarcinJuraszek
C'est pourquoi ReSharper se plaint de modifier « fermetures » parfois. Vous le résolvez en faisant toujours une copie de l'argument que vous passez à un lambda si vous modifiez cette variable après avoir démarré le lambda dans un thread séparé. –
J'ai ajouté un code monothread démontrant le problème mentionné par @MatthewWatson comme réponse pour référence. –