2009-11-29 6 views
2

다운로드 관리자 용 코드를 설계하고 있는데 비동기 작업에 대한 알려진 패턴이 있는지 궁금합니다.Gui 비동기 작업 패턴?

나는 내 자신의 패턴을 개발하기 시작했기 때문에 이것을 묻습니다.

다운로드 하나의 파일 자체는 시작, 중지, 일시 중지, 취소, 진행률 및 속도를 보여주는 비동기 작업입니다. 하나의 큰 파일을 다운로드하면 실제로 많은 작은 파일이나 부품을 다운로드 할 수 있으므로 많은 하위 작업을 사용하는 큰 작업이며 큰 작업은 시작, 중지, 일시 중지, 취소, 진행률 및 속도 표시를 하위와 완전히 일치시켜야합니다 - 수술.

다운로드가 끝나면 파일을 해시하여 유효성을 검사해야하며 이는 다른 작업입니다.

당신은 내가 그 모든 작업을 처리 할 수있는 일반적인 방법이 필요하다는 것을 알 수

...

public interface IOperation 
{ 
    event EventHandler<StateEventArgs> StartRequested; 
    event EventHandler<StateEventArgs> Started; 
    event EventHandler<ProgressEventArgs> ProgressChanged; 
    event EventHandler<SpeedEventArgs> SpeedChanged; 
    event EventHandler<StateEventArgs> PauseRequested; 
    event EventHandler<StateEventArgs> Paused; 
    event EventHandler<StateEventArgs> ContinueRequested; 
    event EventHandler<StateEventArgs> Continued; 
    event EventHandler<StateEventArgs> CancelRequested; 
    event EventHandler<StateEventArgs> Cancelled; 
    event EventHandler<StateEventArgs> Completed; 
    event EventHandler<ExceptionEventArgs> WarningErrored; 
    event EventHandler<ExceptionEventArgs> FatalErrored; 

    OperationState OperationState { get; } 
    ISynchronizeInvoke Invokable { get; set; } 
    object State { get;set; } 

    void StartAsync(); 
    void StartAsync(params object[] args); 
    void StartSync(); 
    void StartSync(params object[] args); 
    void Pause(); 
    void Continue(); 
    void Cancel(); 
} 

답변

0

모델 - 뷰 - 컨트롤러 (MVC) : http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller 이 적절한에서 GUI를 디자인하는 패턴입니다 방법.

+0

MVC는 일반적으로 좋은 생각이지만 DxCK의 의미는 아닙니다. 링크는 멀티 스레드 GUI를 작성하는 것에 대해 아무런 언급도하지 않습니다. –