передача элементов в класс c # - PullRequest
1 голос
/ 18 ноября 2010

Я задавал подобный вопрос раньше, поэтому извините, если это немного повторяется.

Вот мой вопрос, у меня есть главная страница с меткой при загрузке страницы. Я передаю этот элемент управления глобальному классу, который у меня есть, внутри класса что-то вроде:

global class:

private static label myLabel;

public label updateLabel
{
  set {  myLabel = value;}
  get { return myLabel;}
}

на событии загрузки главной страницы я делаю

global.updateLabel = labelOnMasterPage;

теперь скажите, что у меня есть элемент управления в приложении, и я говорю

global.updateLabel.Text = "my new text for label";

это обновит метку на главной странице, и все работает. Теперь это работает только с одним пользователем, вошедшим в систему, и у этого приложения будет несколько пользователей, мой вопрос в том, что я объявляю метку в глобальном классе static, если я обновлю метку для одного пользователя, это повлияет на то, что видят другие пользователи

Есть ли лучший способ сделать это? Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

Если он находится в статическом классе, все пользователи увидят одно и то же.

Вам необходимо быть осторожным при использовании такого подхода в приложении ASP.net из-за количества потоков.Если вы действительно хотите это сделать, вы, вероятно, должны попытаться сделать его поточно-безопасным с блокировкой.

Лично я бы сохранил его в базе данных, такой подход кажется очень хакерским.

0 голосов
/ 18 ноября 2010

Да, static здесь будет применяться ко всему коду, который обращается к нему, независимо от потока или пользователя.Очень редко вы хотите получить поле static в многопоточной среде, такой как ASP.NET.

Вы также искусственно продлеваете срок жизни экземпляра метки long сверх того, что предполагалось.

Существуют альтернативы, такие как сеанс пользователя или уровень приложения, но храните строку (если есть), а не объект метки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...