윈폼에서 새로운 폼.Show()을 호출하거나 .ShowDialog()을 호출해 새로운 폼을 띄워준다.
둘의 큰 차이라 하면 Show는 생성자 폼을 블락하지 않지만 ShowDialog는 새로운 폼이 닫히기 전까지 생성자 폼이 블락된다.
자세히 얘기하자면 Show는 생성자 폼의 컨트롤과 새로운 폼의 컨트롤이 비동기적으로 동작하지만 ShowDialog는 새로운 폼의 컨트롤과 새로운 폼의 컨트롤이 동기적으로 동작한다는 말이다.
개발 예시를 들자면 생성자 폼과 새로운 폼이 서로 다른 스레드에서 동작해야 한다면 생성자 폼에서 새로운 폼의 생성구문을 묶어서 스레드를 호출하면 되는데 이때 Show를 하게 된다면 문제가 생긴다.
Show()와 동시에 새로운 폼을 생성하는 스레드가 죽어버린다. 이러면 스레드가 관리하는 새로운 폼도 닫히게 되는것이다.
하지만 ShowDialog()로 호출하면 ShowDialog가 생성자 스레드의 죽음을 블락시키게 된다.