1

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

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

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

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

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

4

2 回答 2

0

是的,static这里将适用于访问它的所有代码,无论线程或用户如何。很少需要static在 ASP.NET 等高度线程化的环境中使用字段。

您还人为地延长了标签实例的生命周期,远远超出了预期。

有诸如用户会话或应用程序级别的替代方案 - 但存储字符串(如果有的话),而不是标签对象。

于 2010-11-18T03:05:39.357 回答
0

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

由于线程的数量,您需要小心在 ASP.net 应用程序中使用这种方法。如果您真的想这样做,您可能应该考虑使用锁使其线程安全。

我个人会将它存储在数据库中,这种方法似乎很hacky。

于 2010-11-18T03:08:30.187 回答