• 카테고리

    질문 & 답변
  • 세부 분야

    데스크톱 앱 개발

  • 해결 여부

    미해결

1강 멀티 쓰레드 부문 수강 중입니다.

22.07.03 09:58 작성 조회수 158

0

UIThread 가 멈추면 제어가 안된다라는데 어떤 제어가 안된다는지가 궁금합니다.

실행시 두개의 Form1과 Form2가 로드 되는데 로드는 정상적으로 되는데 어떤 제어를 말씀하시는지 잘모르겠습니다.

개별 쓰레드 동작이 안된다고 하는데 두개의 폼이 저는 정상적으로 로드가 됐거든요

사용하는 VS 버전은 2022입니다.

답변 1

답변을 작성해보세요.

0

안녕하세요.개발자Park입니다.

[UIThread 가 멈추면 제어가 안된다라는데 어떤 제어가 안된다는지가 궁금합니다.]

동영상에 나오는것처럼 Form2화면의 이동.클릭기능등 UI제어가 안되시는 것을 보실 수 있습니다.

 

[실행시 두개의 Form1과 Form2가 로드 되는데 로드는 정상적으로 되는데 어떤 제어를 말씀하시는지 잘모르겠습니다.

개별 쓰레드 동작이 안된다고 하는데 두개의 폼이 저는 정상적으로 로드가 됐거든요]

2개의 폼은 아래코드가 동작하면서 모두 정상적으로 나오실 겁니다.

private void Form1_Load(object sender, EventArgs e)

{

Form2 form2 = new Form2();

form2.Show();

그러나 Form2가 보이고나서 5초동안 UI제어및 어떠한 코드도 동작안하게됩니다.

Thread.Sleep(5000);

  

이를 좀더 확실히 보고싶으신경우 아래와 같이 확인하실 수 있습니다.

버튼을 한개생성 후 

       private void Form1_Load(object sender, EventArgs e)

       {

        }

        private void button1_Click(object sender, EventArgs e)

        {

            Form2 form2 = new Form2();

            form2.Show();

            Thread.Sleep(10000);

        }

이런식으로 해보시면 Form2가 보인 후 Form2는 물론 Form1도 제어가 안됩니다.

Thread.Sleep(10000);를 제거하고 폼의 이동,닫기버튼을 해보시면 차이점을 보실 수 있습니다.

감사합니다.

 

아 그렇군요 ~

폼2 가 뜨기 전까진 제어 안된건 봤었습니다