if (sbFriends.Groups[1].Items.Count < 1)
{
reader = DBHelper.GetReader(string.Format("select * from users where id={0}", fromUserId[w]));
if (reader.Read())
{
SbItem item = new SbItem(Convert.ToString(reader["NickName"]),
Convert.ToInt32(reader["FaceId"]));
item.Tag = Convert.ToInt32(reader["id"]);
sbFriends.Groups[1].Items.Add(item);
}
reader.Close();
DBHelper.Close();
}
else
{
for (int i = 0; i < sbFriends.Groups[1].Items.Count; i++)
{
if (Convert.ToInt32(sbFriends.Groups[1].Items[i].Tag) == fromUserId[w])
{
reader = DBHelper.GetReader(string.Format("select * from users where id={0}", fromUserId[w]));
if (reader.Read())
{
SbItem item = new SbItem(Convert.ToString(reader["NickName"]),
Convert.ToInt32(reader["FaceId"]));
item.Tag = Convert.ToInt32(reader["id"]);
sbFriends.Groups[1].Items.Add(item);
}
reader.Close();
DBHelper.Close();
}
}
}只要注释掉一个IF条件就不卡了,怎么回事
{
reader = DBHelper.GetReader(string.Format("select * from users where id={0}", fromUserId[w]));
if (reader.Read())
{
SbItem item = new SbItem(Convert.ToString(reader["NickName"]),
Convert.ToInt32(reader["FaceId"]));
item.Tag = Convert.ToInt32(reader["id"]);
sbFriends.Groups[1].Items.Add(item);
}
reader.Close();
DBHelper.Close();
}
else
{
for (int i = 0; i < sbFriends.Groups[1].Items.Count; i++)
{
if (Convert.ToInt32(sbFriends.Groups[1].Items[i].Tag) == fromUserId[w])
{
reader = DBHelper.GetReader(string.Format("select * from users where id={0}", fromUserId[w]));
if (reader.Read())
{
SbItem item = new SbItem(Convert.ToString(reader["NickName"]),
Convert.ToInt32(reader["FaceId"]));
item.Tag = Convert.ToInt32(reader["id"]);
sbFriends.Groups[1].Items.Add(item);
}
reader.Close();
DBHelper.Close();
}
}
}只要注释掉一个IF条件就不卡了,怎么回事
{
if (Convert.ToInt32(sbFriends.Groups[1].Items[i].Tag) == fromUserId[w])
{
reader = DBHelper.GetReader(string.Format("select * from users where id={0}", fromUserId[w]));
if (reader.Read())
{
SbItem item = new SbItem(Convert.ToString(reader["NickName"]),
Convert.ToInt32(reader["FaceId"]));
item.Tag = Convert.ToInt32(reader["id"]);
sbFriends.Groups[1].Items.Add(item);
}
reader.Close();
DBHelper.Close();
}
你看你是循环操作数据库了! 这要1秒链接N次数据库,当然慢了! 不要这样写!
{
if (Convert.ToInt32(sbFriends.Groups[1].Items[i].Tag) == fromUserId[w])
{
reader = DBHelper.GetReader(string.Format("select * from users where id={0}", fromUserId[w]));
if (reader.Read())
{
SbItem item = new SbItem(Convert.ToString(reader["NickName"]),
Convert.ToInt32(reader["FaceId"]));
item.Tag = Convert.ToInt32(reader["id"]);
sbFriends.Groups[1].Items.Add(item); //这里还是向你循环的sbFriends.Groups[1].Items增加,明显的死循环
}
reader.Close();
DBHelper.Close();
List<string> list = new List<string>();
list.Add("1"); for (int i = 0; i < list.Count; i++)
{
list.Add(i.ToString());
}
if (reader.Read())
{
SbItem item = new SbItem(Convert.ToString(reader["NickName"]),
Convert.ToInt32(reader["FaceId"]));
item.Tag = Convert.ToInt32(reader["id"]);
sbFriends.Groups[1].Items.Add(item);
} 在这里 每次你也只能取出来一条数据。 应该是把if改成while吧 这样两层循环的话 速度就更慢了 可以考虑换一种方式来做
2楼请问这里哪里是死循环? 我就没看出来。
这个是向第一个组的items添加吧
俺没看上面 瓜了一盘
把
for (int i = 0; i < sbFriends.Groups[1].Items.Count; i++)
{这句替换成:
int _Count = sbFriends.Groups[1].Items.Count;
for (int i = 0; i < _Count ; i++)
{
Application.DoEvents();