Чёрной молнии подобный
Пока не пойму, почему, но тем не менее. Вот фрагмент кода некоего компонента.
protected override void OnPreRender(EventArgs E)
{
...
Random rnd = new Random((int)(DateTime.Now.Ticks % Int32.MaxValue));
Response.Write(rnd.Next(10000) + "</br>");
...
на странице 2 таких компонента. Логично предположить, что при вызове rnd каждая переменная будет инициализирована своим значением тиков, соответствующим моменту выполнения кода инициализации. MSDN говорит о том, что a single tick represents one hundred nanoseconds or one ten-millionth of a second. There are 10,000 ticks in a millisecond.
А коли так, то оба компонента должны при отрисовке вывести в поток 2 разных числа. Они и выводят. Но только в Windows 7. XP и 2003 показывают одно и то же. То есть, если для W7 я увижу:
1762
7773
6851
995
то для XP и W2K3
1762
1762
6851
6851
Конечно, инициализацию RNG вынес в static, но всё равно теряюсь в догадках - что это за поведение? Как возможно всю работу по подготовке и отрисовке 2х web-компонентов свести к одному 100-нс отрезку? И почему это поведение не проявляется в Windows7?
Комментариев нет:
Отправить комментарий