将元素传递给类c#

时间:2010-11-18 03:02:52

标签: c# asp.net static-variables

之前我问了一个类似的问题,所以如果这有点重复,我很抱歉。

这是我的问题,我有一个页面加载时有标签的母版页我将这个控件传递给我所拥有的全局类,在类中是这样的:

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";

这将更新母版页上的标签,一切正常。现在我的工作只有一个用户登录,这个应用程序将有多个用户,我的问题是,因为我在全局类中声明标签静态如果我更新一个用户的标签将影响其他用户看到的?

有更好的方法吗?谢谢你的时间。

2 个答案:

答案 0 :(得分:0)

是的,此处的static将适用于访问它的所有代码,无论是线程还是用户。在ASP.NET等高度线程化的环境中,您很少需要static字段。

您还会人为地延长标签实例 long 的生命周期。

还有其他选择,例如用户会话或应用程序级别 - 但存储字符串(如果有的话),而不是标签对象。

答案 1 :(得分:0)

如果它在静态类中,则所有用户都会看到相同的内容。

由于线程数量的原因,您需要注意在ASP.net应用程序中使用这种方法。如果你真的想这样做,你可能应该试着通过锁来使其线程安全。

就我个人而言,我会把它存放在一个数据库中,这种方法看起来非常糟糕。