【问题标题】:Can't make lock object private in static class - why?不能在静态类中将锁定对象设为私有 - 为什么?
【发布时间】:2009-04-22 15:46:00
【问题描述】:

在静态类中,我有一个可以编辑变量的方法。该类是静态的,因为该类是关于站点详细信息的,因此只需要一个实例。

无论如何,线程同步是必需的。我有一个锁定对象,但是当我将其设为私有并说 lock (obj){} 时,我得到了各种错误。

为什么不能将锁对象设为私有?

【问题讨论】:

  • 你能发布一些你的错误信息吗 - 我在一个静态类中有一个私有锁对象,它工作正常......
  • 你得到什么错误?您还需要将对象设为静态。

标签: c#


【解决方案1】:

想一想,你是否静态地初始化了对象。尝试声明:

private static object lockObject = new object();

【讨论】:

  • 不需要初始化对象就可以编译它...没有它也可以。
  • @Mehrdad - 不知道你的意思,它会编译但它会在运行时失败并出现空引用异常,对吧?
  • 是的。我的意思完全一样。 OP 给我的印象是“各种错误”包括编译时错误。猜猜这是一个运行时问题。
【解决方案2】:

它应该工作。你是声明为private static吗?

private static readonly object lockObject = new object();

public static void Method() {
    lock(lockObject) { 
         // ...
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2021-09-05
    相关资源
    最近更新 更多