【发布时间】:2012-09-12 07:12:36
【问题描述】:
我有一个 winform 应用程序,我正在尝试播放多个视频,我正在为此创建线程。我的代码是:
public String[,] vpath = new String[3, 7];
public Video[,] video = new Video[3, 7];
public static Thread[,] th = new Thread[3, 7];
public void playclick(object sender, EventArgs e)
{
int i, j;
for (j = 0; j <= 7 - 1; j++)
{
for (i = 0; i <= 3 - 1; i++)
{
if (btnp[i, j].Capture)
{
//play();
th[i, j] = new Thread(new ThreadStart(play));
th[i, j].IsBackground = true;
th[i, j].Start();
}
}
}
}
public void play()
{
int i, j;
for (j = 0; j <= 7 - 1; j++)
{
for (i = 0; i <= 3 - 1; i++)
{
if (th[i, j].ThreadState == ThreadState.Running) // Having problem here
{
if (video[i, j].State != StateFlags.Running)
{
video[i, j].Play();
}
}
}
}
}
因此,如果没有该 if 语句,它将在单键按下时运行所有视频。但我想运行线程所在的特定视频..
请帮帮我
【问题讨论】:
-
难道不是第一次通过初始化线程的循环,会调用play(),它会循环遍历所有线程,但你只是初始化了第一? play() 函数不应该只处理调用它的线程吗?
-
这是哪个视频类? Play 真的是同步的(模态的)吗?
-
只有当 btnp(一个动态按钮之一)被按下时才会创建线程......然后将调用 play()。
-
但是如果我不检查线程的状态,那么我所有的视频都将开始播放只有一个我不想要的按钮......所以我正在检查那里的状态......但我我在检查中遇到了异常
-
这有点傻。只需将正确的视频传递给播放方法即可。
标签: c# .net multithreading