Непонятки с контекстом

famous1144

Client
Регистрация
27.03.2014
Сообщения
137
Благодарностей
53
Баллы
28
Собственно, время от времени проявляется очень неприятный баг. Я записываю в контекст функцию, например:
Код:
project.Context["test"] = (Func<int>)(() => {
   return new Random().Next(111, 999);
});
И вызываю ее в любом действии:
Код:
int Result = project.Context["test"]();
Это упрощенный пример, функции более сложные. И в определенный момент(непонятно из-за чего) результат как будто кешируется где-то, т.е. функция возвращает одно и то же значение, а не выполняет нужные вычисления. Возможно, это происходит из-за исключения или какой-то ошибке при работе с сетью, но не уверен. Поймать этот момент и выяснить причину не получается, вероятность возникновения баги 1 к 1000. Но она точно есть, и если один раз закешировалась, то потом и 10 раз подряд выдаст старый результат.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Код:
project.Context["test"] = (Func<int>)(() => {
   return new Random(Global.Variables.MainRandom.GetNext()).Next(111, 999);
});
вот так напишите. тогда рандом всегда будет разный
 
  • Спасибо
Реакции: iBotovod

famous1144

Client
Регистрация
27.03.2014
Сообщения
137
Благодарностей
53
Баллы
28
Код:
project.Context["test"] = (Func<int>)(() => {
   return new Random(Global.Variables.MainRandom.GetNext()).Next(111, 999);
});
вот так напишите. тогда рандом всегда будет разный
Это упрощенный пример, функции более сложные
Возможно, методы ZP для работы с сетью или исполнения JS на странице возвращают предыдущий результат при каких-то ошибках? Баг точно есть, но выявить закономерность его появления я не могу.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
это не наш баг это так Random работает в многопотоке
 

famous1144

Client
Регистрация
27.03.2014
Сообщения
137
Благодарностей
53
Баллы
28

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
пример неудачный. приведите другой с объяснением что там не так работает)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)