문제

기본 양식을 실행하기 직전에 새 스레드를 시작하여 스플래시 양식을 표시하고 있습니다.

이 스레드에서 실행하는 메소드에서 아래 옵션 1에 표시된대로 application.run을 사용하고 있습니다. 이것이 올바른 방법입니까, 아니면 application.run이라고 불렀기 때문에 나를 기다리는 데 문제가 있습니까? 대안은 옵션 2이며, 아래에 표시되어 .showdialog ()를 호출하여 양식을 표시합니다.

스플래시 형태 자체는 지정된 시간 후에 닫히고 양식 자체 내에서 제어되며 두 옵션 모두 잘 작동하는 것으로 보입니다.

제 질문은 다음과 같습니다. 선호되는 것은 옵션 1 또는 옵션 2입니까? 하나 또는 다른 하나에 대해 특정한 이유를 제시 할 수 있다면

감사.

메인 스 니펫 :

// Run splash screen thread.
Thread splash = new Thread(new ThreadStart(ShowSplash));
splash.Start();

// Run main application.
Application.Run(new MainForm());

스플래시 양식 옵션 표시 1 :

    static void ShowSplash()
    {
        Application.Run(new SplashForm());
    }

스플래시 양식 옵션 표시 2 :

    static void ShowSplash()
    {
        using (SplashForm splash = new SplashForm())
        {
            splash.ShowDialog();
        }
    }
도움이 되었습니까?

해결책

스플래시 화면 스레드가 끝날 때까지 대기합니다

대부분의 정격 답변을 참조하십시오

다른 팁

옵션 2는 아마도 메인 형식과 동일한 mesageloop를 사용하지만 다른 스레드에서 사용하기 때문에 문제가 발생할 것입니다.

옵션 1은 괜찮습니다.

나는 이것이 특이한 관점일지도 모르지만 스플래시 화면을 사용하지 않고 대신 '환영 페이지'또는 '도움말> 대신'도움말>에 정보를 보여 주었습니까?

이를 수행해야 할 몇 가지 이유가 있습니다.

  1. 멀티 스레딩에 들어 가지 않는 한, 일부 경고/MSGbox가 상단에 팝업되면 스플래시 화면이 제대로 다시 표시되지 않을 수 있습니다.

  2. '플러그인 x, y 및 z'가 설치된 스플래쉬 스크린은 해당 정보가로드 될 때까지 실제로 알 수 없습니다. 이 정보가로드되면 앱이 준비되므로 스플래시 화면을 닫거나 사용자가 방해가됩니다.

  3. 내가 쳐다보고 스플래시 화면을 놓치면, 당신이 말하는 모든 정보를 놓칠 것입니다. '3 일 안에 라이센스가 만료된다'는 정보의 일부이며 오늘은 금요일이므로 월요일에는 앱을 사용할 수 없다는 것을 알지 못합니다. 모호하지만 나는 그것을 보았다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top