2009-11-04 9 views
7

기본 폼을 실행하기 직전에 새 스레드를 시작하여 스플래시 폼을 표시하고 있습니다.스플래시 화면 표시 방법 모범 사례 C#

이 스레드가 실행하는 방법에서 아래 옵션 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

리플렉터를 다운로드하고 VB =에서 어떻게 수행되었는지 확인하십시오. –

+0

내가 스플래시 스크린을 싫어하는 유일한 사람입니까? 벌써 멀어지는 응용 프로그램을로드하고 내 시간을 낭비하지 마세요. –

+0

@Trickster : 정확히 그랬고 결국 Application.Run에 대한 호출이 스플래시 폼을 표시하는 데 사용된다는 것을 알았습니다. 아이디어를 가져 주셔서 감사합니다! 당신의 대답을 받아 들였습니다. – Andy

답변

3

Splash Screen waiting until thread finishes

가장 대답

난이 특이한 관점이 될 수 있지만 당신은 시작 화면을 사용하는 대신 '시작 페이지'또는 '도움말>에 대한 정보를 표시하지 간주 것을 깨닫게
3

옵션 2는 아마 때문에 다음 문제로 실행됩니다 MainForm과 동일한 Mesageloop을 사용하고 있지만 다른 스레드에서 사용하고 있습니다.

옵션 1은 문제가 없습니다.

+0

@Henk : 사실, 그것이 틀렸을 수도 있습니다. 나는 새 스레드에서 Application.Run을 호출하면 주 UI와는 다른 새로운 UI 스레드가 시작될 것이라고 생각한다. 보십시오 여기에서 : http://stackoverflow.com/questions/745057/how-to-start-a-ui-thread-in-c Andy

+0

링크의 Repost : http://stackoverflow.com/ 질문/745057/how-to-start-a-ui-thread-in-c – Andy

+0

Andy, 옵션 2는 App.Run()을 사용하지 않습니다. –

1

평가를 참조하십시오 about '화면 대신?

  1. 당신이 멀티 스레딩에 들어가 않는 한, 시작 화면이 약간의 경고/MSGBOX 그것의 맨 위에 팝업 경우, 제대로 칠 부정하지 않을 수 있습니다

    는이 작업을 수행하는 이유는 소수가 있습니다 스플래시 화면의 이점.

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

  3. 스플래시 화면을 보지 못하면 내가 말하는 정보가 무엇이든 놓치게됩니다. '3 일 안에 라이센스 만료'라는 정보가 그 정보의 일부이고 오늘은 금요일 인 경우 월요일에 앱을 사용할 수 없다는 것을 알지 못합니다. 애매한데, 나는 그것을 보았다.

+0

"'당신이 멀티 스레딩에 들어 가지 않는 한"- 새로운 스레드()를 인스턴스화하는 것이 어렵습니까? –

+0

더 건설적인 메모 - 포토샵의 스플래시 화면은 IMO가 아닌 경우에도 거의 즉시로드되는 것처럼 보입니다. –