asp.net c#public statics和并发用户

时间:2011-03-22 16:54:23

标签: c# oop static

我有一个MyClassFile.cs文件,如下所示:


public class MyClass1
{
    public static DataTable ReadData(string Connection, string Command, Dictionary Parameters)
    {
        //ADO.NET stuff here to .Fill() the DataTable Below
        return dtTable;
    }

    public static void WriteData(string Connection, string Command, Dictionary Parameters)
    {
        //ADO.NET stuff to write to DB
    }
}

我在我的Default.aspx.cs中使用它:


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        var Parameters = new Dictionary<string, object>
        {
            { "?Parameter1", TextBox1.Text },
            { "?Parameter2", TextBox2.Text }
        };

        DataTable dtTable = MyClass1.ReadData(Connection, Command, Parameters);
        ListView1.DataSource = dtTable;
        ListView1.DataBind();
    }
}

这是一个网站。我是否会遇到此代码的问题,特别是因为ReadData()是公共静态的?如果有很多用户同时使用它会怎么样?

我的目标是拥有一个可重复使用的“.ReadData(x,y,z)”和“.WriteData(x,y,z)”

2 个答案:

答案 0 :(得分:4)

看起来这些方法没有任何共享状态 - 它们没有使用任何静态变量 - 所以你应该没问题。

我个人更喜欢将数据层注入表示层(或者在其间有另一层)以使测试更容易 - 静态方法通常是测试的敌人 - 但这是一个稍微不同的事情。

答案 1 :(得分:1)

静态方法本质上是线程安全的,只要它们不访问由应用程序的其他部分共享的对象。因此,在ReadData / WriteData方法中,如果您只是接受参数,创建数据库连接,执行语句并返回一些内容,那么您应该没问题。