Здравствуйте, vlp, Вы писали:
vlp>Здравствуйте, _NN_, Вы писали: vlp> ? _NN>>Не нужен ли где-нибудь volatile, Volatile.Read или Interlocked.Read ?
vlp>Атомарная тут только запись, чтение теоретически может приводить к stale read и в этом случае не будет брошено исключение когда dispose вызван. Это в принципе нестрашно, т.к. в этом случае все равно код нормально работать уже не будет.
В каком смысле не страшно ?
Вот я вызвал Dispose, и вызываю Receive в цикле.
Компилятор заинлайнил/процессор положил в кеш переменную и теперь Receive будет вызываться, а _disposed всегда будет 0.
Или так не может быть ?
vlp>Interlocked.Read не сделан осознанно, чтобы не замедлять код. Dispose вызывается редко, в отличие от остальных операций на сокетах.