加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET代码隐藏类中的静态方法是否是非线程安全的?

发布时间:2020-12-15 04:26:58 所属栏目:百科 来源:网络整理
导读:如果不使用任何实例成员,我可以在ASP.NET Pages和UserControls类中使用静态方法吗?即: protected void gridView_PageIndexChanging(object sender,GridViewPageEventArgs e){ gridStatement.DataSource = CreateDataSource(); gridStatement.PageIndex = e
如果不使用任何实例成员,我可以在ASP.NET Pages和UserControls类中使用静态方法吗?即:
protected void gridView_PageIndexChanging(object sender,GridViewPageEventArgs e)
{
    gridStatement.DataSource = CreateDataSource();
    gridStatement.PageIndex = e.NewPageIndex;
    gridStatement.DataBind();
}

private static DataTable CreateDataSource()
{
    using (var command = new SqlCommand("SELECT foobar"))
    {
        var table = new DataTable();
        new SqlDataAdapter(command).Fill(table);
        return table;
    }
}

或者这不是线程安全的?

解决方法

是的,您可以使用静态成员 – 它们是线程安全的.每个线程将在单独的上下文中执行,因此在静态方法内创建的任何对象都只属于该线程.

如果静态方法正在访问静态字段(例如列表),则只需要担心.但在您的示例中,代码绝对是线程安全的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读