【发布时间】:2011-07-01 12:04:12
【问题描述】:
我在静态方法/类/变量中编写了很多代码,以便可以跨站点访问它们,以实现全球化思想并在类不是数据保存类时“节省”创建和销毁类(dbcontext例如)。
问题是,这些类/方法必须一次只能访问一次吗?它们会导致任何类型的瓶颈吗?
谢谢。
【问题讨论】:
我在静态方法/类/变量中编写了很多代码,以便可以跨站点访问它们,以实现全球化思想并在类不是数据保存类时“节省”创建和销毁类(dbcontext例如)。
问题是,这些类/方法必须一次只能访问一次吗?它们会导致任何类型的瓶颈吗?
谢谢。
【问题讨论】:
问题是这个类/方法一次只能访问一次吗?
不,它们可以被多次并行访问。您应该小心多线程应用程序中的静态类,因为您需要确保它们是线程安全的。
它们会导致任何类型的瓶颈吗?
这将取决于它们的编写方式和作用。
【讨论】:
可以并行访问静态方法、字段和属性。如果您需要“一次一个”,为了数据安全,您将需要一个锁或其他一些同步方法。
【讨论】:
不确定您在这里的意思,但静态成员是从任何给定线程按顺序访问的,就像实例成员一样。
如果你从多个线程访问一个静态成员,那么你应该同步访问,即确保它们按顺序发生,使用任何synchronization constructs available in .NET。这是为了避免 race conditions 带来的不可预测的副作用。
【讨论】: