如何在for循环中延时?

时间:2015-08-06 13:31:00

标签: c# multithreading for-loop sleep

我希望在显示每条记录后以2秒延迟的窗体形式显示多条记录。我正在尝试Thread.Sleep(2000),但它无法正常工作。我正在编写以下代码

for (var j = 0; j < connectionGetRecord.DataSet.Tables["StudentTable"].Rows.Count; j++)
{
    labelName.Text = connectionGetRecord.DataSet.Tables["StudentTable"].Rows[j]["Name"].ToString();
    labelFatherName.Text = connectionGetRecord.DataSet.Tables["StudentTable"].Rows[j]["FatherName"].ToString();
    labelRollNumber.Text = connectionGetRecord.DataSet.Tables["StudentTable"].Rows[j]["RollNumber"].ToString();
    var image = (byte[])connectionGetRecord.DataSet.Tables["StudentTable"].Rows[j]["Image"];
    var stream = new MemoryStream();
    stream.Write(image, 0, image.Length);
    pictureBox1.Image = new Bitmap(stream);
    var classId = (int)connectionGetRecord.DataSet.Tables["StudentTable"].Rows[j]["ClassId"];
    command.CommandText = "Select ClassName From TBLCLasses where ClassId=@ClassId";
    command.Parameters.Clear();
    command.Parameters.AddWithValue("@ClassId", classId);
    connectionGetRecord.GetRecord("TBLClasses", command);
    labelClass.Text = connectionGetRecord.DataSet.Tables["TBLClasses"].Rows[0]["ClassName"].ToString();
    pictureBox1.Size = new Size(530, 540);
    //command.CommandText = "Update TblStudent set PCDT=@PCDT where StudentId=@StudentId";
    //command.Parameters.Clear();
    //command.Parameters.AddWithValue("@PCDT", DateTime.Now);
    //command.Parameters.AddWithValue("StudentId", textBoxComputerNUmber.Text);
    //command.ExecuteNonQuery();
    command.Dispose();
    connectionGetRecord.connection.Close();
    path = connectionGetRecord.DataSet.Tables["StudentTable"].Rows[j]["Path"].ToString();
    //Flash(labelName, 1000, Color.Black, 10);
    // Flash(labelClass, 1000, Color.Black, 10);
    player.SoundLocation = path;
    player.Play();
    Thread.Sleep(2000); 
}

我有多个针对驱动程序ID的记录,我希望逐个显示它们,每条记录显示之间有2秒的时间间隔。我所拥有的这个代码的问题是我只显示数据集表的最后一条记录。我希望每个记录以2秒的时间间隔显示。

另外我想为我的代码中写的每条记录播放声音。每次录音也是2秒。任何人都可以告诉我我做错了什么?先谢谢。

1 个答案:

答案 0 :(得分:0)

由于SoundPlayer的Play()函数创建了一个单独的线程,如果你想等到当前记录结束然后再播放下一个线程,你应该使用PlaySync()函数。