X レコードを含む Excel ファイルから読み取った c# のデータセットをループしています。テスト目的で、Thread.Sleep() を使用して、各レコードが読み取られた後、出力を 1 秒間一時停止しました。私の理解では、ループを書いた方法で、1 秒間一時停止してから 1 行の出力 (1 レコード) を表示し、1 秒間一時停止し、1 行を表示する必要があるということでした。ただし、コードを実行すると、 X 秒間の一時停止の後、すべてのレコードがすぐに画面に出力されます。なぜこれが起こっているのか知っている人はいますか?ブレークポイントを挿入してステップスルーしたところ、すべて正常に動作しているようです (エラーなどはありません)。これが基本的な質問である場合は申し訳ありませんが、私は少し緑のプログラマーです。
private void ReadExcelFile()
{
string fileAndPath = fileTextBox.Text;
string fileName = Path.GetFileName(fileAndPath);
string directoryPath = Path.GetDirectoryName(fileAndPath);
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileAndPath + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; ;
using (var conn = new OleDbConnection(connectionString))
{
conn.Open();
var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] ";
var adapter = new OleDbDataAdapter(cmd);
var ds = new DataSet();
adapter.Fill(ds);
foreach (DataRow row in ds.Tables[0].Rows)
{
user = row.ItemArray[0].ToString();
email = row.ItemArray[1].ToString();
password = row.ItemArray[2].ToString();
Thread.Sleep(1000);
excelTextBox.Text += user + " " + email + " " + password + " " + Environment.NewLine;
}
}
}
}