나는 여러 비디오를 재생하려고하는데 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 문이. 하지만 난 스레드가에있는 특정 비디오를 실행하려면 ..
은 pls는 저 사람
처음으로 스레드를 초기화하는 루프를 통해 play()가 호출되고 모든 스레드를 반복하지만 첫 번째 스레드 만 초기화 한 경우가 아닙니까? play() 함수는 호출 된 스레드 만 처리하면 안됩니까? – HaemEternal
어떤 Video 클래스입니까? Play는 정말 동기식 (모달)입니까? –
스레드는 btnp (많은 동적 버튼 중 하나)를 누른 경우에만 생성됩니다 ... 그러면 play()가 호출됩니다. –