Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
lang:csharp:thread [2019/02/25 18:02] – [Threads lambda utilisant une variable locale] : ne pas créer trop de threads en parallèle. root | lang:csharp:thread [2020/05/11 00:51] (Version actuelle) – Fix alignement des images root |
---|
| |
=====Blocage inter-threads===== | =====Blocage inter-threads===== |
[[https://stackoverflow.com/questions/2214002/how-to-get-return-value-when-begininvoke-invoke-is-called-in-c-sharp|How to get return value when BeginInvoke/Invoke is called in C#]] {{ :lang:csharp:thread:net_-_how_to_get_return_value_when_begininvoke_invoke_is_called_in_c_-_stack_overflow.mhtml |Archive du 21/11/2018}} | [[https://stackoverflow.com/questions/2214002/how-to-get-return-value-when-begininvoke-invoke-is-called-in-c-sharp|How to get return value when BeginInvoke/Invoke is called in C#]] {{ :lang:csharp:thread:net_-_how_to_get_return_value_when_begininvoke_invoke_is_called_in_c_-_stack_overflow_2020-02-07_10_22_03_am_.html |Archive du 06/02/2010 le 07/02/2020}} |
====Sans aideur==== | ====Sans aideur==== |
===Sans valeur de retour=== | ===Sans valeur de retour=== |
| |
====Thread classique==== | ====Thread classique==== |
<note important> | <WRAP center round important 60%> |
D'une manière générale, je déconseille l'utilisation de méthode lambda dès que la méthode doit accéder à des éléments extérieurs au contenu de la fonction lambda (''this'' par exemple). Cela pour bien avoir conscience des risques de race condition et de la traditionnelle erreur ''Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on.''. | D'une manière générale, je déconseille l'utilisation de méthode lambda dès que la méthode doit accéder à des éléments extérieurs au contenu de la fonction lambda (''this'' par exemple). Cela pour bien avoir conscience des risques de race condition et de la traditionnelle erreur ''Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on.''. |
| |
{{ :lang:csharp:thread:invalidoperationexception.png?452 |}} | {{:lang:csharp:thread:invalidoperationexception.png|}} |
| |
Donc pour que chaque Thread reste bien indépendant, je conseille une classe statique contenant une seule méthode statique, qui sera celle appelée. | Donc pour que chaque Thread reste bien indépendant, je conseille une classe statique contenant une seule méthode statique, qui sera celle appelée. |
</note> | </WRAP> |
| |
<code csharp> | <code csharp> |
| |
=====Threads lambda utilisant une variable locale===== | =====Threads lambda utilisant une variable locale===== |
[[https://blogs.msdn.microsoft.com/ericlippert/2009/11/12/closing-over-the-loop-variable-considered-harmful/|Closing over the loop variable considered harmful]] {{ :lang:csharp:thread:closing_over_the_loop_variable_considered_harmful_fabulous_adventures_in_coding.mhtml |Archive du 03/12/2018}} | [[https://blogs.msdn.microsoft.com/ericlippert/2009/11/12/closing-over-the-loop-variable-considered-harmful/|Closing over the loop variable considered harmful]] {{ :lang:csharp:thread:closing_over_the_loop_variable_considered_harmful_microsoft_docs_2020-02-07_10_22_10_am_.html |Archive du 12/11/2009 le 07/02/2020}} |
| |
Mauvais : | Mauvais : |