【问题标题】:passing elements into class c#将元素传递到类 c#
【发布时间】:2011-05-11 19:27:18
【问题描述】:

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

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

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

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

有没有更好的方法来解决这个问题?感谢您的宝贵时间。

【问题讨论】:

  • 上一个问题有很好的答案
  • 请按照右侧的说明(编辑时)缩进您的代码,并接受更多答案。

标签: c# asp.net static-variables


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    如果是在静态类中,所有用户看到的都是一样的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 2011-11-16
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      相关资源
      最近更新 更多