C# · 12月 23, 2021

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

如果不使用任何实例成员,我可以在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; }}

或者这不是线程安全的?

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

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