[英]C# not writing to rich textbox when reading from SQl
我正在尝试使用以下代码清除Richtextbox,从sql数据库中收集数据并通过richtextbox(rtbData)显示程序正在检索信息:
public void readInData()
{
rtbData.Clear();
rtbData.AppendText("...Retrieving Data From Database...");
reader = dataCommand.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
numbers.Add(reader.GetInt32(0).ToString());
names.Add(reader.GetString(1));
weights.Add(reader.GetDouble(2).ToString());
statuses.Add(reader.GetString(3));
times.Add(reader.GetDateTime(4).ToString());
counter++;
}
}
connection.Close();
}
但是无论何时运行,richtextbox都不会清除,并且消息也永远不会出现。 奇怪的是,当我在rtbData.AppendText命令的正下方插入messagebox.show()命令时,它工作正常。 我尝试用thread.sleep命令替换消息框,但是没有用。 有任何想法吗? 谢谢大家。
为了避免阻塞UI线程,您可以异步读取数据库:
public void readInData()
{
rtbData.Clear();
rtbData.AppendText("...Retrieving Data From Database...");
Task.Run(() =>
{
reader = dataCommand.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
numbers.Add(reader.GetInt32(0).ToString());
names.Add(reader.GetString(1));
weights.Add(reader.GetDouble(2).ToString());
statuses.Add(reader.GetString(3));
times.Add(reader.GetDateTime(4).ToString());
counter++;
}
}
connection.Close();
});
}
请记住,readDatabase可以在单独的线程上执行,因此您需要确保它是线程安全的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.