2014-04-23 4 views
0

사용자가 무언가를 할 수 있기 전에 사용자가 5 초 동안 기다리도록하고 싶지만 양식을 원할 때 Thread.Sleep(5000);을하고 싶지 않으므로 문제가 있습니다. 로드 할 수있는 기능 및 볼 수 있어야하지만 사용자가 5 초 동안 아무것도 할 수 없도록하려는 것입니다. 물론 버튼을 클릭 할 수는 있지만 아무 일도 일어나지 않아야합니다. 나는이 일을하기 위해 무슨 짓을Windows Forms는 메시지를 표시하기 전에 5 초 동안 기다립니다.

답변자 덕분에 (내 코드에 의한 특성에 약간 다릅니다) : 5 초 후에 해고되는 시작 화면을 원하는처럼

var t = Task.Delay(1000) //1 second/1000 ms 
t.Wait(); 
+0

소리를하는 우리/사용자가 원하지 않을 것입니다 : P – Jason

+0

@ Jason, 저는 바로 압니다 : D! 운좋게도이 프로그램은 결코 사용되지 않을 것입니다. – Zain

답변

7

그럼 당신은 항상 모든 양식을 해제 할 수 있습니다 오초가 활성화 후 ...

(예 : .NET 프레임 워크 4.5 사용) 당신이 뭔가를하려고 노력하는 것처럼

//Your window Constructor 
public MyWindow() 
{ 
    InitializeComponent(); 

    this.Cursor = Cursors.WaitCursor; 
    this.Enabled = false; 
    WaitSomeTime(); 

    //load stuff 
    ..... 
} 

public async void WaitSomeTime() 
{ 
    await Task.Delay(5000); 
    this.Enabled = true; 
    this.Cursor = Cursors.Default; 
} 
+0

안녕하십니까? * 가장 큰 쿠키를 제공합니다. – Zain

+0

프레임 워크 4.5가 아닌 경우는 어떻게됩니까? 그러면 어떻게 될 것입니까? – shivi

1

는 소리.

당신은 단순히 타이머를 가질 수

http://mrbool.com/how-to-make-a-splash-screen-in-csharp/26598

포함 윈폼가 (이 들리는 것만큼 쉽지하지 않은) 화면을 스플래시 만드는 방법을 보여 웹에 꽤 많은 자원이있다 로딩이 완료되면 5 초 후에 스플래시 화면에 알리십시오.

+0

많은 코드가 간략하게 보입니다. 게시 한 다른 사람이 더 적합한 솔루션을 가지고 있지만 게시물에 감사드립니다 :)! – Zain

+0

다른 솔루션은 매우 우아합니다. 비동기/대기가 도입되기 전에 훨씬 더 힘들었습니다. –

+0

실제로 작동하지만 작동하지 않는다는 사실이 밝혀졌습니다. * 울부 짖기 * – Zain

0

생성자에게 백그라운드 작업자를 호출하고 작업 완료 이벤트에서 기본 폼을로드하십시오.

관련 문제