如何更有效地使用SQL查询填充列表框?

时间:2017-04-19 13:16:25

标签: c# sql-server performance listbox

我有一个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秒。之后,它可以正常工作,直到页面刷新或重新加载。我将其缩小到导致问题的列表框/查询。

有没有办法可以提高效率来提高效率?

1 个答案:

答案 0 :(得分:1)

每个逻辑操作(需要时间来处理)应该在一个单独的线程上,因此它不会锁定主UI线程。