从access数据库oledb字段读出jpg文件,共90行,即90个jpg文件。
希望 放pictureBox1中,隔1秒依次显示这些图片。
结果:程序界面pictureBox1中一直无显示,然后只显示最后1个图片。
log文件却显示每个图片都显示了。
请问是怎么回事?private void button1_Click(object sender, EventArgs e)
{
myDBpath = str_MainDir+ @"savePIC.mdb";
str_SQL = @"SELECT myJpg FROM PIC ";
str_DBtable = @"PIC";
System.Data.DataTable mydbtable = readDB2DataTable(myDBpath, str_SQL, str_DBtable); int DB_num = mydbtable.Rows.Count;//
if (DB_num > 0)
{
for (int m = 0; m < DB_num; m++)
{
Byte[] byteBLOBData = new Byte[0];
byteBLOBData = (Byte[])(mydbtable.Rows[m][0]);
MemoryStream stmBLOBData = new MemoryStream(byteBLOBData);
pictureBox1.Image = Image.FromStream(stmBLOBData);
stmBLOBData.Close(); Thread.Sleep(1000);
log( "已显示完第" + m.ToString() + "个图片");//记录日志
}
}
mydbtable.Clear();
}
希望 放pictureBox1中,隔1秒依次显示这些图片。
结果:程序界面pictureBox1中一直无显示,然后只显示最后1个图片。
log文件却显示每个图片都显示了。
请问是怎么回事?private void button1_Click(object sender, EventArgs e)
{
myDBpath = str_MainDir+ @"savePIC.mdb";
str_SQL = @"SELECT myJpg FROM PIC ";
str_DBtable = @"PIC";
System.Data.DataTable mydbtable = readDB2DataTable(myDBpath, str_SQL, str_DBtable); int DB_num = mydbtable.Rows.Count;//
if (DB_num > 0)
{
for (int m = 0; m < DB_num; m++)
{
Byte[] byteBLOBData = new Byte[0];
byteBLOBData = (Byte[])(mydbtable.Rows[m][0]);
MemoryStream stmBLOBData = new MemoryStream(byteBLOBData);
pictureBox1.Image = Image.FromStream(stmBLOBData);
stmBLOBData.Close(); Thread.Sleep(1000);
log( "已显示完第" + m.ToString() + "个图片");//记录日志
}
}
mydbtable.Clear();
}
Thread.Sleep(1000);更好的做法是把整个for循环的代码放到线程里
Thread.Sleep(1000);提示:参数无效。?
加在
Thread.Sleep(1000);
前面
加在
Thread.Sleep(1000);
前面Application.DoEvents()这里提示:参数无效。?
Application.DoEvents()
也要参数了?