我有一个ListBox,我使用sql server存储过程填充大约5000行。我的存储过程看起来像这样。
SELECT UserID,LanID
FROM User
ORDER BY LanID
现在我从这个过程创建一个DataTable,并将该DataTable用作ListBoxes数据源。
public DataTable getAllUsers(string environment)
{
List<Criteria> userList = new List<Criteria>();
using (SqlConnection sqlConnection = new SqlConnection(GetConnectionString(environment)))
{
sqlConnection.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter("usp_GetUser", sqlConnection))
{
var dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
}
这就是我称之为这种方法的方法
private void setUsersListBox()
{
DataTable dtOfUsers = groupDetailDataAccess.getAllUsers("Development");
UsersListBox.DataSource = dtOfUsers;
UsersListBox.DataBind();
}
所有这一切的问题是,一旦页面加载我可以在网页上做我需要做的事情大约10秒然后它冻结大约20秒。之后,它可以正常工作,直到页面刷新或重新加载。我将其缩小到导致问题的列表框/查询。
有没有办法可以提高效率来提高效率?
答案 0 :(得分:1)
每个逻辑操作(需要时间来处理)应该在一个单独的线程上,因此它不会锁定主UI线程。