C#线程的sleep问题
猫侠 2013-05-30 10:47:49 需求是这样的,winform程序,轮播文本、视频、图片,播放文本时暂停5秒,接着播放视频,视频播放完成后,播放图片。
如果在winformUI界面中编写所有代码,thread.sleep将会影响文本、视频、图片的显示
如果文本、视频、图片分别使用线程,又有很多意想不到的问题
winform程序主窗体内有一个picturebox,一个Label,一个mediaplay播放器
下面程序不能如预想的那样,顺序播放,顺序隐藏,求高手指点
//锁住主程序
lock (obj_main_main)
{
//屏幕对应的节目元素列表
List<MODEL.PROGRAMELEModel> modelList = comm.programEleModel("P1");
for (int jj = 0; jj < modelList.Count; jj++)
{
//锁住循环内程序
lock (obj_main)
{
if (modelList[jj]._eletype.Equals("1"))
{
//不为空播放文本
if (!modelList[jj]._chartextmodel._content.Trim().Equals(""))
{
Thread t2 = new Thread(showchartex_task);//处理文本的线程
t2.Start();
Thread.Sleep(10000);
label1.Visible = false;//隐藏文本
}
}
//判断是否视频
if (modelList[jj]._eletype.Equals("2"))
{
//pictureBox1.Controls.Clear();
//不为空播放视频
if (!modelList[jj].filepath.Trim().Equals(""))
{
Thread t2 = new Thread(showvideo_task);//处理视频的线程
t2.Start();
Thread.Sleep(10000);
axWindowsMediaPlayer1.Width = 300;//隐藏线程
}
}
//判断是否图片
if (modelList[jj]._eletype.Equals("3"))
{
Thread t2 = new Thread(showpic_task);//处理图片的线程,将生成的图片add进pictureBox中
t2.Start();
Thread.Sleep(10000);
pictureBox1.Controls.Clear();
pictureBox1.Refresh();
}
}
}
}