Asp.net C # Статический метод Thread Безопасная обработка ошибок - PullRequest
0 голосов
/ 15 февраля 2012

Иногда от простых мыслей, которые, как вы думали, вы знали, вызывает головокружение ....

У меня есть приложение Asp.Net (формы), которое использует статические методы нестатического класса для некоторой обработки в PostBack. Эти методы должны возвращать bool.

Когда в статическом методе есть ошибка, я бы предпочел не просто выбросить исключение обратно в код уровня страницы, а явно обработать его в статическом методе и вернуть false.

Возможно, я слишком обдумываю это, но, если MyClass имеет статическое поле ErrorMessage, используется на странице следующим образом:

if(!MyClass.DoSomething){
  errorLabel.Text = MyClass.ErrorMessage; //Static ErrorMessage is set 
}

Прав ли я, что ErrorMessage эффективно поточно-ориентирован, так как MyClass нестатичен, страница живет в определенном HttpContext и переменные уничтожаются в PostBack?

Есть ли причина, или нет, лучше?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Если ErrorMessage установлено DoSomething, то есть не потокобезопасен.Если вы получите переключение контекста после теста if и перед назначением, он может быть переназначен другим потоком.Статические поля являются статическими независимо от того, является ли содержащий класс статическим или нет.

Избавьтесь от кода возврата в стиле C и вместо этого выведите исключение при ошибке.

0 голосов
/ 15 февраля 2012

Нет, ваш код не является потокобезопасным.Независимо от того, является ли ваш класс статическим или нет, статические переменные могут быть доступны и сохраняют состояние.Другие потоки могут легко изменить содержимое этой переменной, прежде чем ваш элемент управления вернется обратно.

...