¿Hay alguna razón práctica por la que el equipo .NET decidió no admitir Boolean en la operación Interlocked.Exchange?¿Por qué Interlocked.Exchange no es compatible con el tipo booleano?
Uno de los ejemplos de uso es cuando desea garantizar que algún código se ejecute solo una vez y desea usar un indicador booleano para eso.
Por supuesto, solo puede usar un 'int' y' if (Interlocked.CompareExchange (ref value, 1, 0) == 0) {...} '- no responde * por qué * por supuesto. .. o tal vez más fácil - 'Lazy': http://msdn.microsoft.com/en-us/library/dd642331.aspx –
Buena pregunta, esto se ha informado a Microsoft muchas veces en los últimos años. No he visto una razón satisfactoria para mí aparte de ser un descuido. Si alguien sabe algo, háganoslo saber! –
Si necesita compatibilidad con enclavamiento para booleano puede usar mi implementación [InterlockedBoolean.cs] (https://gist.github.com/hanswolff/7926751) – quadfinity