Если у вас есть что-то вроде этого:
html, body { height: 100%; overflow:auto; }
Если определение body и html имеет определение высоты 100%, а также включена прокрутка, window.scrollTo (и все производные механизмы прокрутки) не работают, несмотря на отображаемую полосу прокрутки (которая может использоваться пользователем), когда содержимое превышает этот 100% роста. Это потому, что полоса прокрутки, которую вы видите, - это не окно, а тело.
Решение:
html { height: 100%; overflow:auto; }
body { height: 100%; }
Вы говорите, что не хотите использовать блокировку
по соображениям производительности - но есть ли у вас это тестировал? Неоспоримая блокировка (которая, судя по всему, так и есть) довольно дешевая.
Я обычно предпочитаю «очевидно правильный», а не «умный и, возможно, более эффективный», когда дело доходит до потоковой передачи (и в целом , но особенно для потоковой передачи).
Протестируйте свое приложение с блокировкой и без нее и посмотрите, заметите ли вы разницу. Если блокировка дает существенную разницу , тогда, конечно, используйте хитрость. В противном случае я бы просто использовал блокировку.
Одна вещь, которую вы могли бы сделать, это использовать Interlocked.
Если вам действительно нужен полный диапазон беззнакового int (2 ^ 32-1), а не подписанного int (2 ^ 31-1), вы можете преобразовать его в int64 (есть перегрузка Interlocked.Increment
, которая принимает int64), а затем приводит к беззнаковому int.
вы можете объявить uint как изменчивый.
http://msdn.microsoft. com / en-us / library / x13ttww7 (VS.71) .aspx