我希望在显示每条记录后以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秒。任何人都可以告诉我我做错了什么?先谢谢。
答案 0 :(得分:0)
由于SoundPlayer的Play()函数创建了一个单独的线程,如果你想等到当前记录结束然后再播放下一个线程,你应该使用PlaySync()函数。