У меня есть беспорядок с попыткой чтения строки за строкой из базы данных MS Access и отображения ее на экране, когда между каждым дисплеем есть несколько секунд сна.Как задержать мою программу при чтении из базы данных C#
Я использую System.Threading
, как вы можете видеть, но кажется, что спать происходит до того, как программа отображает записи, а когда спящий закончен, отображается только последняя запись без отображения предыдущего.
Вот мой код, я буду очень признателен за любую помощь!
private void com_start_Click(object sender, EventArgs e)
{
try
{
string ConString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=F:\MyBrainWash\Englishdb.accdb;";
OleDbConnection Con = new OleDbConnection(ConString);
Con.Open();
check_connection.Text = "succeeded";
OleDbCommand command = new OleDbCommand();
command.Connection = Con;
command.CommandText = "Select * From words";
OleDbDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
lab_word.Text = reader["word"].ToString();
lab_definition.Text = reader["definition"].ToString();
Thread.Sleep(30000);
}
}
reader.Close();
Con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error " + ex);
}
}
Когда вы спите вы спите в потоке пользовательского интерфейса. Тогда на экране ничего не обновляется. Вам нужен таймер или другой лучший способ сделать что-то. 'Thread.Sleep()' почти всегда неправильно. –
Могу ли я предложить просто прочитать все из базы данных сразу и просто задержать отображение вашей информации? – Fang
related: http://stackoverflow.com/questions/20849979/how-to-make-oledb-code-run-asynchronous –