2013-01-19 7 views
2

최선의 방법이 무엇을 하려는지 궁금합니다. 내 응용 프로그램에는 백그라운드 다운로드 작업을 시작한 다음 다운로드 한 파일에 따라 일부 작업을 수행하는 단추가 있습니다.C# 비동기 작업이 완료 될 때까지 대기

사용자가 여전히 기본 양식을 사용할 수있는 상황은 "필요한 데이터가 다운로드되면 게임이 곧 시작됩니다"상황과 같습니다.

private void btnStart_Click(object sender, EventArgs e) 
{ 
    //execute some code 

    Downloader.RunWorkerAsync(files); //this worker reports progress to the main form 

    while (Downloader.IsBusy) 
     Application.DoEvents(); 

    //execute some more code 
} 

나는 그렇게하는 것이 전혀 좋지 않다는 것을 알고 있습니다.

다운로드 작업 중에 주 양식이 응답해야하기 때문에 다운로드 코드를 동 기적으로 실행할 수 없습니다. 또한 프로그램의 다른 많은 영역에서 사용되기 때문에 최종 코드를 다운로드 완료 이벤트에 넣을 수 없으며 "일반"다운로드 시스템으로 남아 있어야합니다.

그래서 내가 원하는 것을 할 수있는 방법이 있습니까? 다른 비동기 메서드에 대한 경험이 없습니다.

답변

2

BackgrounWorker을 사용하는 경우 올바르게 구성해야합니다. BW에는 비동기 작업 완료를 처리하기 위해 구독해야하는 RunWorkerCompleted 이벤트가 있습니다.

1

.net 4.5 프레임 워크 (awaitasync)의 비동기 프로그래밍 기능을 사용해야한다고 생각합니다. 내가 .NET 4.5 기능을 사용하여 이전 .NET 버전과 PC에서 응용 프로그램을 실행하려고하면

async programming

+0

를 참조하십시오, 그것은 작동하지 않는 이유는 무엇입니까? 이 프로그램의 사용자는 대부분 3.0 - 4.0에 있습니다. – Ryan

관련 문제