Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为每个用户创建不同的静态单例实例_C#_Asp.net Mvc_Web_Static_Singleton - Fatal编程技术网

C# 为每个用户创建不同的静态单例实例

C# 为每个用户创建不同的静态单例实例,c#,asp.net-mvc,web,static,singleton,C#,Asp.net Mvc,Web,Static,Singleton,我正在使用ASP.NET MVC开发一个网站,我有很多这样的说明: new ReleaseFactory().BuildFeatureSection(); 为了改进我认为使用静态方法的代码: ReleaseFactory.BuildFeatureSection() 问题是我担心会出现僵局 这些方法通常访问不同的数据源(如Excel文档、数据库等),据我所知,通过静态方法访问它们不是一个好主意,尤其是在开发web应用程序时 改进当前语法有什么好主意吗 编辑:有关发布工厂用途的更多信息 Rele

我正在使用ASP.NET MVC开发一个网站,我有很多这样的说明:

new ReleaseFactory().BuildFeatureSection();
为了改进我认为使用静态方法的代码:

ReleaseFactory.BuildFeatureSection()
问题是我担心会出现僵局

这些方法通常访问不同的数据源(如Excel文档、数据库等),据我所知,通过静态方法访问它们不是一个好主意,尤其是在开发web应用程序时

改进当前语法有什么好主意吗

编辑:有关发布工厂用途的更多信息

ReleaseFactory是一个用于为发布页面创建ViewModels的类。显示的数据并非基于登录的用户,而是每个人的数据相同。在我的网站上,还有其他工厂有一个构造函数,通常只需要一个参数

例如:{baseUrl}/Feature/{ID}

public ActionResult BetaProgram(int id)
{  
       var viewModel = new FeatureFactory(id).BuildFeatureViewModel();

       return View(viewModel);
}

此外,在这种情况下,显示的信息不是基于用户,而是基于当前页面的id。希望这有助于更好地理解这种情况。

在没有看到您的代码的情况下,我最好的建议是使用锁定,例如

public static class Foo
{
    private static object lockingObject = new object();

    public static void DoSomething()
    {
        lock (lockingObject)
        {
            // Do your stuff.
        }
    }
}
这是一个简单的例子,可能对您来说就足够了,但不确定。基本上,您一次只能对一个线程阻塞对
lock
语句中运行的代码的访问。这可以消除死锁,因为一次只有一个线程可以执行
lock
语句中的代码


您最好尝试一下,如果您有工具,可以对代码进行一些负载测试,看看有什么中断。

“改进代码”-如何?你想解决什么问题?在我看来,您似乎是在添加问题,而不是解决问题。
ThreadStaticAttribute
如果每个用户都有单独的问题thread@DmitryBychenko在ASP.NET应用程序中,“线程”几乎从来都不是“用户”的同义词。你的问题是正确的,但这个标题肯定让我很反感。@dcastro-这就是他说的原因“如果每个用户都有单独的线程”