旧版系统具有用于数据库连接的静态成员。这很危险吗?

时间:2018-07-02 22:36:26

标签: c# asp.net multithreading iis

我们拥有庞大的旧系统。它存在一个已经存在一段时间的错误,即在10000个请求中有1个错误,这种方法应该从一个很小的表(10行)中返回一个众所周知的ID,该方法会返回一个“疯狂的”值,令我们惊讶的是几乎总是系统另一个表的ID。此方法仅在数据库上运行一个简单的SELECT查询。

我们注意到有两个类(使用一个似乎与该错误所在的位置有关的类)来为数据库连接使用静态成员:

    public class Accounts
    {
        private static Database db;

        private static Database DB
        {
            get
            {
                if (db == null)
                {
                    db = DatabaseFactory.CreateDatabase();
                }
                return db;
            }
        }

 ...

}

这很危险吗?我们不确定这是否会带来线程安全问题,例如我们之前提到的错误,听起来很像是同步错误。

0 个答案:

没有答案